Создание чересстрочных видео с помощью ffmpeg-python

Я, наверное, что-то делаю не так и / или чего-то не понимаю, но ...

У меня прогрессивное видео (здесь failing1.mp4). Медиаинформация об этом видео подтверждает, что «Тип сканирования» является прогрессивным.

Если я использую следующий код для получения того же чересстрочного видео:

      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? Было бы неплохо привести небольшой пример.

1 ответ

Отвечая на свой вопрос. Следующий код 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)
Другие вопросы по тегам