FFmpeg 视频过滤器损坏的 mp4 文件

FFmpeg video filters corrupt mp4 file

我正在尝试使用 FFmpegmp4 文件添加视觉过滤器。

我尝试了很多过滤器,但其中 4 个都有效,其中只有 1 个完美。我在 Android application 中使用它们,但我在 windows cmd 上使用 FFmpeg 尝试了相同的命令行,结果是相同的。有了 3 个过滤器,.mp4Androids mediaplayer 无法被许多玩家玩。我仍然可以在 VLC 和有很多 codex 的播放器上播放 "corrupt" 文件,但我需要它们完美运行。

唯一按预期工作的过滤器是 Black and White,命令是(已尝试 -vf-filter_complex):

-i origin.mp4 -filter_complex hue=s=0 blackWhite.mp4

其他 3 个是 SepiaVintageNegative

"colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131",  "curves=vintage", "curves=negative"

由于我无法在此处上传视频文件,我添加了一个 link 的 3 个文件,原始视频文件,black/white 过滤后的文件(有效),复古文件(无效) ).

Dropbox - video files link

曲线和颜色通道混合器过滤器仅适用于 RGB 像素,因此如果需要,FFmpeg 会预先转换视频。

当使用典型的 H.264 编码器保存为 MP4 时,ffmpeg 将转换为 YUV 颜色编码,但会选择保真度最高的像素格式,对于 RGB 源,该格式为 YUV 4:4:4。这种格式与大多数播放器不兼容。解决方案是手动强制输出 YUV 4:2:0。在输出文件名前添加 -pix_fmt yuv420p