FFmpeg 电视

FFmpeg 电视

发行团体 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 可用于, 例如。
  • Atune环境对于源(例如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最高码率(或),与源匹配的(或应该可以覆盖它),并将配置文件和级别设置为/ 。然后使用分辨率播放(仅当源是高清时;在--presetslowerveryslow--tunefilmanimationautoauto图片设置,将变形设置为松散并改变其中一个轴,从下一个高分辨率分辨率开始,然后向下移动),直到--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获得完整的源代码。

相关内容