Answers:
编码(盗版)视频的指南称为“场景指南”。他们由各个发行小组签署,他们将确保其视频符合指南要求,LOL是其中之一。
您可以找到场景指南的列表scenerules.org。如果我没有记错的话,您正在寻找的标准是SD x264电视发布标准,假设您的视频是1280×780。如果您有高清视频,则在45分钟内200 MB的质量可能不会获得真正好的质量。这相当于大约600 kBit / s,但是对于720p来说已经足够了。
至于编码工具,您可以使用FFmpeg(Handbrake所基于的)走得很远。唯一的罪魁祸首是该场景指南禁止使用FFmpeg和FAAC音频,但是除非您真正做出了贡献,否则不要紧。
如果您以前没有视频编码经验,并且所有这些关键字对您没有任何意义,请查看以下博客文章/超级用户问题:
基本上,规则说您必须使用具有恒定速率因子质量设置的x264编码器。它的功能与设置恒定的比特率完全不同:您可以将CRF设置为以恒定的质量对x264的视频进行编码。
典型的CRF水平在18到28之间,发行组建议使用19–20来对易于压缩的材料进行高质量编码。在执行此操作时,您不会事先知道最终文件的大小,但这只是进行CRF编码的全部要点:您无需关心实际文件的大小,只需要高质量即可。
设置好ffmpeg
并准备好输入视频后,编码实际上非常简单。但是请注意,您的源视频必须是高质量的,否则重新编码只会使质量进一步下降。
以下是关键参数:
slow
配置文件(更好的压缩效率,但会浪费编码时间)tune
设置为源(例如film
为薄膜状的内容)在中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,但您可能不介意。
由于您未发布mediainfo,因此无法与您提到的发布组通话。但这是制作紧凑编码的指南,这意味着达到良好的质量/大小平衡。
您应该从HandBrake和最好的可用资源开始。在“ 来源”部分中,选择一个简短但难以编码的片段(包括动作和精细细节)。在“ 目标”部分中,选择libmkv。在“ 视频”选项卡中,取消选中“ 使用高级选项”(您仍然可以在更多设置中逐个添加这些选项),选择“ --rc=crf
速率控制”,--preset
计算机可以承受的最高水平(slower
或veryslow
),--tune
与来源相匹配的(film
或animation
应该覆盖它),以及将配置文件和级别设置为auto
/ auto
。然后以分辨率播放(仅当源为高清时;在图片设置中),将变形设置为松散并改变一个轴(从下一个高分辨率开始,再向下),--crf
直到您在短片段的质量和比特率之间找到一个很好的折衷。请注意,crf与其余的编码设置有关,这就是为什么它应该是您最后更改的视频设置的原因。在音频,去Vorbis格式为160kbps的(这将使用AoTuV -q5
,无需进一步调整实现透明度)。在其他标签中,检查是否保留了您可能需要的所有内容(章节标记,字幕轨道,元数据等)。当您满意时,可以使用这些设置来编码剧集的其余部分。平均比特率最终应该比困难部分低得多。当您对设置充满信心时,可以使用它们对整个季节进行编码。
以上步骤如何提高压缩性:libmkv使您可以访问更多编解码器,配置文件和版本以自动进行,这意味着将没有任何回放约束来限制编码器。一小段时间(几秒钟)使您有更多的时间进行调整并查看结果。Tune可以优化源代码看起来像的心理视觉(感知)质量。较高的预设会以降低编码时间为代价来提高压缩度(这在您困难的片段中可能并不明显,但是会提高大多数其他场景中的比特率)。CRF速率控制意味着您的编码将改变比特率以达到给定的质量,而要求更高的情节将获得更多空间。
如果您保持原始分辨率,则降噪滤波器也非常有用。您希望保持轻便,因为目标不是清除可察觉的源缺陷,而是在不明显降低质量的情况下提高可压缩性。这是使用HandBrake的HQDN3D去噪器的指南,该质量介于x264 --nr
和最先进的去噪器之间。
基于slhck的答案,我构建了这个简单的Python解决方案来调用正确的ffmpeg
参数。基于最新的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'.
# /superuser/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-tv.py。