FFmpeg 视频过滤器损坏的 mp4 文件
FFmpeg video filters corrupt mp4 file
我正在尝试使用 FFmpeg
向 mp4
文件添加视觉过滤器。
我尝试了很多过滤器,但其中 4 个都有效,其中只有 1 个完美。我在 Android application
中使用它们,但我在 windows cmd
上使用 FFmpeg
尝试了相同的命令行,结果是相同的。有了 3 个过滤器,.mp4
和 Androids mediaplayer
无法被许多玩家玩。我仍然可以在 VLC
和有很多 codex 的播放器上播放 "corrupt" 文件,但我需要它们完美运行。
唯一按预期工作的过滤器是 Black and White
,命令是(已尝试 -vf
和 -filter_complex
):
-i origin.mp4 -filter_complex hue=s=0 blackWhite.mp4
其他 3 个是 Sepia
、Vintage
和 Negative
"colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131", "curves=vintage", "curves=negative"
由于我无法在此处上传视频文件,我添加了一个 link 的 3 个文件,原始视频文件,black/white 过滤后的文件(有效),复古文件(无效) ).
曲线和颜色通道混合器过滤器仅适用于 RGB 像素,因此如果需要,FFmpeg 会预先转换视频。
当使用典型的 H.264 编码器保存为 MP4 时,ffmpeg 将转换为 YUV 颜色编码,但会选择保真度最高的像素格式,对于 RGB 源,该格式为 YUV 4:4:4。这种格式与大多数播放器不兼容。解决方案是手动强制输出 YUV 4:2:0。在输出文件名前添加 -pix_fmt yuv420p
。
我正在尝试使用 FFmpeg
向 mp4
文件添加视觉过滤器。
我尝试了很多过滤器,但其中 4 个都有效,其中只有 1 个完美。我在 Android application
中使用它们,但我在 windows cmd
上使用 FFmpeg
尝试了相同的命令行,结果是相同的。有了 3 个过滤器,.mp4
和 Androids mediaplayer
无法被许多玩家玩。我仍然可以在 VLC
和有很多 codex 的播放器上播放 "corrupt" 文件,但我需要它们完美运行。
唯一按预期工作的过滤器是 Black and White
,命令是(已尝试 -vf
和 -filter_complex
):
-i origin.mp4 -filter_complex hue=s=0 blackWhite.mp4
其他 3 个是 Sepia
、Vintage
和 Negative
"colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131", "curves=vintage", "curves=negative"
由于我无法在此处上传视频文件,我添加了一个 link 的 3 个文件,原始视频文件,black/white 过滤后的文件(有效),复古文件(无效) ).
曲线和颜色通道混合器过滤器仅适用于 RGB 像素,因此如果需要,FFmpeg 会预先转换视频。
当使用典型的 H.264 编码器保存为 MP4 时,ffmpeg 将转换为 YUV 颜色编码,但会选择保真度最高的像素格式,对于 RGB 源,该格式为 YUV 4:4:4。这种格式与大多数播放器不兼容。解决方案是手动强制输出 YUV 4:2:0。在输出文件名前添加 -pix_fmt yuv420p
。