【问题标题】:FFmpeg: omitting -filter_complex results in missing video in some playersFFmpeg:省略 -filter_complex 会导致某些播放器中的视频丢失
【发布时间】:2021-11-04 00:16:04
【问题描述】:

我创建了一个不那么简单的 ffmpeg 命令,它带有一个复杂的过滤器,用于将开场/结束演职员表附加到视频中。在同一过程中,视频被调整大小并重新编码。这在我测试的所有播放器中都可以正常工作。

当我省略 -filter_complex arg 和图像输入时,生成的文件在 VLC 中按预期播放,但在 Windows Media Player 中只有音频(没有视频)。

这一切都是在 Windows 10 上使用标准的 Windows 批处理文件完成的。

有人知道这里发生了什么吗?我的 ffmpeg foo 非常有限。

ffmpeg.exe ^
 -i "..\videos\film.mov" ^
 -y ^
 -codec:a aac ^
 -s:v 1280x720 ^
 -codec:v libx264 -preset slower -tune animation -crf 22 ..\videos\film.mov.m4v"

ffmpeg.exe ^
 -i "..\videos\film.mov" ^
 -i OpeningCredits.de.png -i ClosingCredits.de.png ^
 -filter_complex "[0:v][1:v] overlay=0:0:enable='between(t,0,3.5)',drawtext=enable='between(t,0,3.5)':fontfile=fonts/Roboto-Bold.ttf:text=Test:fontcolor=white:fontsize=104:x=(w-text_w)/2:y=(h-text_h)/2+45,drawtext=enable='between(t,0,3.5)':fontfile=fonts/Roboto-Bold.ttf:text=:fontcolor=white:fontsize=104:x=(w-text_w)/2:y=(h-text_h)/2+45+text_h+20 [tmp]; [tmp][2:v] overlay=0:0:enable='between(t,39-5.2,39)'" ^
 -y ^
 -codec:a aac ^
 -s:v 1280x720 ^
 -codec:v libx264 -preset slower -tune animation -crf 22 "..\videos\film.mov.m4v"

【问题讨论】:

    标签: video ffmpeg video-encoding


    【解决方案1】:

    叠加滤镜默认输出到YUV420P,所有播放器都支持。所以在使用的时候,这种格式转换是隐含的副作用。

    在这种情况下,您的输入似乎不是 YUV420P。因此,当省略 filter_complex 时,不会发生到 4:2:0 的转换,并且 WMP 显然没有过滤器来解码非 4:2:0 YUV 格式。

    添加-pix_fmt yuv420p 强制转换。

    【讨论】:

    • 其实,这正是我的问题。已解决,完成,谢谢。
    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2013-05-04
    • 2011-12-31
    • 2019-04-23
    相关资源
    最近更新 更多