发行团体 LOL 在《吸血鬼日记》的发行编码方面做得非常出色(其他节目,如《老爸老妈浪漫史》的比特率较高,因此似乎没有这么有效)。
每个约 45 分钟的 MP4 文件约 200 MB,质量令人惊叹。
我只是想知道他们使用了什么设置和什么软件。我尝试使用 MediaInfo 从这些文件中获取信息,然后使用 HandBrake 中的设置,但没有成功。
有人能帮帮我吗?我对编码/压缩不太了解。
答案1
编码(盗版)视频的准则称为“场景指南”。它们由各种发布组织签署,以确保其视频符合指南,LOL 就是其中之一。
您可以找到场景指南列表scenerules.org如果我没记错的话,你要找的标准是SD x264 电视发布标准假设您的视频分辨率为 1280×780。如果您有高清视频,那么在 45 分钟内,200 MB 的带宽可能无法获得真正优质的视频质量。这相当于大约 600 kBit/s,但对于 720p 来说已经足够了。
至于编码工具,你可以使用FFmpeg(Handbrake 基于此)。FAAC 音频编码器已被禁用,但 FFmpeg 无论如何也不再支持它。您可以使用其他高质量 AAC 编码器,例如libfdk-aac
。
如果您以前没有视频编码经验,并且所有这些关键字对您都没有任何意义,请查看以下博客文章/超级用户问题:
基本上,规则规定你必须使用 x264 编码器恒定利率因子质量设置。它的作用与设置恒定比特率完全不同:您可以设置 CRF 以让 x264 以恒定质量对视频进行编码。
典型的 CRF 级别在 18 到 28 之间,而发布组建议将 CRF 级别设为 19-20,以便对易于压缩的材料进行高质量编码。在执行此操作时,您不会提前知道最终文件的大小,但这正是执行 CRF 编码的重点:您不关心实际文件大小 — 您只想要良好的质量。
设置好后ffmpeg
,输入视频就准备好了,编码其实很简单。但请注意,源视频必须具有高质量,否则重新编码只会进一步降低其质量。
以下是关键参数:
- x264 视频具有:
- 法规 19–20
slow
配置文件(以编码时间为代价获得更好的压缩效率)- H.264级别3.1,设置了一些限制
- 必须使用除双三次(FFmpeg 默认值)之外的任何调整器进行缩小尺寸。Lanczos 可用于, 例如。
- A
tune
环境对于源(例如film
电影类内容) - AAC 音频具有:
- 可变比特率编码
- 比特率在 96 至 160 kBit/s 之间
在 中ffmpeg
,这转化为以下内容:
ffmpeg -i input.mp4 \
-c:v libx264 -crf 19 -level 3.1 -preset slow -tune film \
-filter:v scale=-1:720 -sws_flags lanczos \
-c:a libfdk_aac -vbr 5 \
output.mp4
在 FFmpeg 中,AAC 编码的选择有点有限。请参阅此处了解您的 AAC 选择并参考FFmpeg 和 AAC 编码指南了解更多信息。
如果您的视频最终太大,您可以调整 CRF。值 ±6 将导致比特率减半/加倍,因此如果您从 19 开始并转到 25,最终比特率将减半。场景规则不允许 CRF 高于 24,但您可能不会介意。
答案2
由于您没有发布媒体信息,因此无法与您提到的发布组进行交流。但这里有一个制作紧凑编码的指南,这意味着要实现良好的质量/大小平衡。
您应该从 HandBrake 和最佳可用源开始。在来源部分,选择一个简短但难以编码的片段(既有动作又有细节)。在目的地部分,选择库。 在里面视频选项卡,取消选中使用高级选项(您仍然可以逐案添加这些选项更多设置),选择码率控制,您的计算机可以承受的--rc=crf
最高码率(或),与源匹配的(或应该可以覆盖它),并将配置文件和级别设置为/ 。然后使用分辨率播放(仅当源是高清时;在--preset
slower
veryslow
--tune
film
animation
auto
auto
图片设置,将变形设置为松散并改变其中一个轴,从下一个高分辨率分辨率开始,然后向下移动),直到--crf
找到短片段的质量和比特率之间的良好折衷。请注意,crf 与您的其余编码设置相关联,这就是为什么它应该是您更改的最后一个视频设置。在声音的,选择沃比斯在160kbps(这将使用 AoTuV -q5
,无需进一步调整即可实现透明度)。在其他标签,检查您可能需要的所有内容是否都已保留(章节标记、字幕轨道、元数据等)。当您满意时,您可以使用这些设置对剧集的其余部分进行编码;平均比特率最终应该比困难部分低得多。当您对设置有信心时,您可以使用它们对整个季节进行编码。
上述步骤如何提高紧凑性:libmkv 可让您访问更多编解码器,配置文件和版本为自动意味着不会有任何播放限制来阻碍编码器。短片段(几秒钟)可让您有更多时间调整内容并查看结果。调整可优化源应有的心理视觉(感知)质量。更高的预设会以编码时间为代价来提高紧凑性(这在您的困难片段上可能不明显,但会提高大多数其他场景中的比特率)。CRF 速率控制意味着您的编码将改变比特率以达到给定的质量,要求更高的剧集将获得更多空间。
如果您保持原始分辨率,降噪滤波器也非常有用。您需要保持其轻量,因为目标不是清除可察觉的源缺陷,而是在不明显降低质量的情况下提高压缩率。以下是HandBrake 的 HQDN3D 降噪器使用指南,介于 x264--nr
和最先进的降噪器为了质量。
答案3
FFmpeg 电视
基于響克答案我构建了这个简单的 Python 解决方案来调用正确的ffmpeg
参数。基于最新的scenerules 2016 电视标准。
python3 ffmpeg-tv.py input.mp4 output.mkv
您可以找到所有参数的描述,以及为什么默认这样设置的简要说明。
# 1.3) Providers which downscale 1080i to 720p (e.g. BellTV) are not allowed.
# 5.10) Resized video must be within 0.5% of the original aspect ratio.
scale="-1:-1" # <width>:<height>; -1 maintain ratio.
# 4.1) Video must be H.264/MPEG-4 AVC encoded with x264 8-bit.
video_encoder="libx264"
# 4.4) Constant Rate Factor (--crf) must be used.
# 4.4.1) CRF values below 18 and above 23 are never allowed.
# http://slhck.info/video/2017/02/24/crf-guide.html
# (lossless) 0 <- (better) 23 <- (worst) 51
# ┌─────────────────┬───────┬───────────────────────────────────────────┐
# │ Compressibility │ CRF │ General Examples │
# ├─────────────────┼───────┼───────────────────────────────────────────┤
# │ High │ 18-19 │ Scripted, Talk Shows, Animation, Stand-Up │
# │ Medium │ 20-21 │ Documentary, Reality, Variety, Poker │
# │ Low │ 22-23 │ Sports, Awards, Live Events │
# └─────────────────┴───────┴───────────────────────────────────────────┘
crf="19"
# 4.6) Settings cannot go below what is specified by preset (--preset) 'slow'.
preset="slow"
# 4.7) Level (--level) must be '4.1'.
level="4.1"
# 6.4) Only sharp resizers, such as Spline36Resize, BlackmanResize or LanczosResize/Lanczos4Resize,
# must be used.
# 6.4.1) Simple resizers, such as Bicubic, PointResize or Simple, are not allowed.
resizer="lanczos"
# 4.17) Optional tuning (--tune) parameters allowed are: 'film', 'grain' or 'animation'.
# https://superuser.com/questions/564402/explanation-of-x264-tune
# film – intended for high-bitrate/high-quality movie content. Lower deblocking is used here.
tune="film"
# 8.1) Audio must be in the original format provided.
# 8.1.1) Transcoding audio is not allowed.
# 8.2) Multiple language audio tracks are allowed.
# Since we cannot ensure that the external content is in an acceptable TV format, we'll recode
# it into aac. We're just playing safe here.
#
# FFmpeg supports two AAC-LC encoders (aac and libfdk_aac) and one HE-AAC (v1/2) encoder
# (libfdk_aac). The license of libfdk_aac is not compatible with GPL, so the GPL does not permit
# distribution of binaries containing incompatible code when GPL-licensed code is also included.
# libfdk_aac is "non-free", and requires ffmpeg to be compiled manually.
# Second best encoder is the native FFmpeg AAC encoder. (aac)
audio_encoder="aac"
# Audio quality (bit rate).
# Use either VBR or CBR. VBR is the easiest.
# https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr
# VBR: Target a quality, rather than a specific bit rate. 1 is lowest quality and 5 is highest
# quality.
# https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
# http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Bitrate_Modes
# CBR: kbps
vbr="5"
cbr=None
# 8.2) Multiple language audio tracks are allowed.
# 8.2.1) The default audio track must be the language intended for release (e.g. An English release
# containing English, German and Russian audio tracks, must have the default flag set on the English
# track).
# https://trac.ffmpeg.org/wiki/Map
# Include "all" inputs to the output: -map 0
map="0"
看ffmpeg-电视.py获得完整的源代码。