Как использовать libx265 (H265) в пакете ffmpeg-python?

Как использовать libx265 (H265) в пакете ffmpeg-python? Я пытался использовать:

(
    ffmpeg
    .input('0.mp4')
    .filter('fps', fps=25, round='up')
    .output('out.mkv', format='h265')
    .run()
)

но выдает ошибку: формат не распознан.

но это работает:

(
    ffmpeg
    .input('0.mp4')
    .filter('fps', fps=25, round='up')
    .output('out.mkv', format='h264')
    .run()
)

person kup    schedule 14.07.2021    source источник
comment
Возможно, это может помочь: stackoverflow.com/questions/37344997/ Вы также можете ознакомиться с документацией, раздел 16.14 ffmpeg.org/ffmpeg-all.html   -  person Costa    schedule 14.07.2021


Ответы (1)


Замените format='h265' на vcodec='libx265'.


  • H.265 — это видеокодек, и vcodec='libx265' указывает FFmpeg использовать видеокодер libx265.
  • Формат вывода в случае видеоконтейнера MKV — format='matroska'.
    Вам не нужно устанавливать формат, поскольку FFmpeg автоматически выбирает формат вывода по расширению файла .mkv.

Обновленный код:

import ffmpeg

(
    ffmpeg
    .input('0.mp4')
    .filter('fps', fps=25, round='up')
    .output('out.mkv', vcodec='libx265')
    .run()
)
person Rotem    schedule 14.07.2021
comment
Благодарю вас! Можно ли добавить -bitexact -map_metadata -1 в приведенный выше код? - person kup; 14.07.2021
comment
Вы можете добавить их к выходным аргументам: output('out.mkv', vcodec='libx265', fflags='bitexact', map_metadata='-1') - person Rotem; 14.07.2021
comment
Похоже, что fflags='bitexact' не эквивалентно -bitexact. Обойти это можно с помощью **{'bitexact': None} (вместо fflags='bitexact'). - person Rotem; 15.07.2021