0

我可能做错了什么和/或有些东西我不明白,但是......

我有一个渐进式视频(这里是failing1.mp4)。对该视频进行 mediainfo 确认“扫描类型”是渐进式的。

如果我使用以下代码来获得相同的视频隔行扫描:

import ffmpeg

ffmpeg.input("/home/dbr/Videos/failing1.mp4") \
    .filter("interlace") \
    .output(
        "output_via_filter.mp4",
        vcodec="libx264",
        preset="ultrafast"
    ) \
    .run(overwrite_output=True)

使用 mpv、vlc 或任何像样的视频文件播放器,我可以看到生成的文件 (output_via_filter.mp4) 确实是隔行扫描的(我看到隔行扫描的“伪影”)。但是,运行mediainfo output_via_filter.mp4告诉我“扫描类型”是渐进的。

如果我将该代码用于相同的输入文件(根据我在 intarweb 上的搜索,再次尝试获取隔行扫描文件,而不使用“隔行扫描”过滤器):

ffmpeg.input("/home/dbr/Videos/failing1.mp4") \
    .output(
        "output_via_interlace.mp4",
        vcodec="libx264",
        preset="ultrafast"
    ) \
    .global_args("-vf", "tinterlace=interleave_top,fieldorder=tff", "-flags", "+ilme+ildct") \
    .run(overwrite_output=True)

生成的文件 (output_via_interlace.mp4) 不是隔行扫描的,mediainfo output_via_interlace.mp4确认“扫描类型”是逐行扫描的。

然而,使用 ffmpeg 直接在命令行上使用相同的参数:

ffmpeg -i f/home/dbr/Videos/failing1.mp4 -vf tinterlace=interleave_top,fieldorder=tff -flags +ilme+ildct  output.mp4

给我:

mediainfo output.mp4 | grep Scan
Scan type                                : MBAFF
Scan type, store method                  : Interleaved fields
Scan order                               : Top Field First

我想我的问题确实是:如何使用 ffmpeg-python 生成隔行扫描视频文件? 一个小例子会很好。

4

1 回答 1

0

回答我自己的问题。以下 ffmpeg-python 代码按预期工作:

ffmpeg.input("/home/dbr/Videos/failing1.mp4") \
    .filter("tinterlace", "interleave_top") \
    .filter("fieldorder", "tff") \
    .output(
        "output_via_interlace.mp4",
        vcodec="libx264",
        preset="ultrafast",
        flags="+ilme+ildct"
    ) \
    .run(overwrite_output=True)
于 2021-03-24T07:54:06.320 回答