4ae*_*1e1 19 h.264 avi ffmpeg avidemux video-conversion
我正在使用 FFmpeg 将一些旧的 mpeg4 视频(在 avi 容器中)转码为 h.264。基本上
ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4
Run Code Online (Sandbox Code Playgroud)
这样做时,会mpeg4发出以下警告
视频使用非标准且浪费的方式来存储 B 帧(“打包 B 帧”)。考虑使用 VirtualDub 或 avidemux 之类的工具来修复它。
我知道我仍然可以成功转码,但是从警告中我不清楚生成的 h.264 视频的质量是否会受到影响。
所以,
鉴于我只关心veryslow输出 h.264 视频的质量(和大小,我想最小化我的移动设备的大小,这就是为什么我也使用预设),我是否应该关心打包的 B-帧?
如果应该,我该如何使用 avidemux 修复它们?(我已经尝试浏览手册。)
小智 24
B 帧是一种用于视频压缩的帧类型,用于表示视频的帧。B 帧可以使用来自先前和未来帧的信息来表示每个视频帧。
较旧的 DivX 编码视频通常使用一种称为压缩比特流的丑陋方法,该方法将多个视频帧放入单个 AVI 块中。打包比特流不是标准的 MPEG-4,使用更多空间,需要更多 CPU 能力来编码/解码,并且(最重要的是)如果复制到另一种容器类型中可能会导致问题。这是警告的主要原因。
由于您正在重新编码视频而不是仅仅复制它,因此您应该没问题。如果您想保留原始视频,但将其复制到另一种类型的容器(例如 MP4 或 MKV)中,最好先使用 FFmpeg filter 解压缩 B 帧mpeg4_unpack_bframes。
你可以用一些简单的东西来打开 B 帧
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
Run Code Online (Sandbox Code Playgroud)