Как создать MP4 с кодеком H.265, используя FFmpeg?

Я хочу закодировать видеофайл в H.265. Последняя версия ffmpeg должна поддерживать H.265 ( Source).

Однако я не смог найти никакой информации о точной команде.

Я не знаю, какую библиотеку мне следует указывать после -vcodec,

Я использую последний Zeranoe FFmpeg Build (git-c78a416 (2013-10-26)).

3 ответа

Решение

Фон

FFmpeg поддерживает кодирование HEVC/H.265 с 2014-2-12 с помощью libx265. Теперь вы можете напрямую использовать ffmpeg для кодирования HEVC или использовать другой кодер, а затем вручную преобразовать его в.mp4, .mov или.mkv, используя FFmpeg.

Доступные кодеры

Текущие датчики H.265/HEVC:

Только MulticoreWare и DivX предлагаются из-за их времени разработки и надежности.

Два х265

Одна путаница заключается в том, что есть два независимых проекта, оба названных "x265", один из которых был студентом китайского колледжа и практически мертв, а другой - коммерческая компания MulticoreWare. Несмотря на то, что первый появился первым, он практически мертв, а последний находится в стадии активной разработки и одобрен VideoLAN (разработчиком x264).

Временная шкала поддержки кодирования FFmpeg HEVC

  • 2013-10-12 Добавлена ​​поддержка мультимедиа.mov в 53f903b,
  • 2014-02-12 Добавлена ​​поддержка кодирования libx265 в bb6b173,
  • 2014-03-09 Добавлена ​​более полная поддержка Matroska muxing для HEVC 38aee64,
  • 2014-03-09 Добавлена ​​более полная поддержка.mov и новая поддержка.mp4 muxing 9563e67,

ТЛ; др

В любом случае, это полный набор текущих возможностей кодирования HEVC в порядке моей рекомендации:

  • Непосредственное использование MulticoreWare libx265 с FFmpeg. Это означает, что с последней сборкой Zeranoe вы можете сделать это:

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mov
    # With audio
    ffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=25 OUT.mov
    

    Примечание. Сборка FFmpeg новее, чем 2014-03-09, позволяет вам теперь мультиплексировать HEVC в файлы.mp4 (коммит 9563e67):

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
    

    Вы также можете добавить его в Matroska (.mkv):

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
    
  • Используя автономный MulticoreWare x265, а затем смешайте полученный файл с FFmpeg или MP4Box. Это будет работать со старыми сборками FFmpeg, которые не поддерживают libx265.

    # Decode input using FFmpeg and encode using x265 using pipe
    ffmpeg -i INPUT -f yuv4mpegpipe -pix_fmt yuv420p - | \
    x265 --y4m -o encoded.265 -
    
    # Mux the resulting encoded .265 file into an .mp4 or .mov
    
    # Using ffmpeg: only works with newer builds that support muxing HEVC
    # Muxing to .mp4 supported since 03-09-2014
    ffmpeg -i encoded.265 -c copy out.mp4
    # With audio
    ffmpeg -i encoded.265 -i INPUT -map 0 -map 1:a -c copy out.mp4
    
    # Using MP4Box
    MP4Box -add raw.265 out.mp4
    # With audio
    MP4Box -add {INPUT}#audio -add raw.265 out.mp4
    

    Благодаря @Duvrai.

  • Использование DivX HEVC Encoder и затем его мультиплексирование.

    Способ его использования аналогичен использованию автономного x265 (см. Выше).

Обновление: FFmpeg теперь имеет поддержку кодирования HEVC с использованием MulticoreWare libx265.

Обновление 2: FFmpeg теперь поддерживает мультиплексирование HEVC в mp4 и mov теперь.

ffmpeg добавил кодировку x265 12 февраля 2014 года и поддержку контейнера mp4 9 марта:

ffmpeg -i input -c:v libx265 -c:a copy output.mp4

Замечания:

  • Приведенная выше команда скопирует аудио в исходный кодек. Если это не сработает, конвертируйте аудио в AAC, пропустив -c:a copy (или заменить copy с aac, libfdk_aac или же libfaac - заказано по качеству)
  • при компиляции использовать ffmpeg --enable-libx265 (а также --enable-libfdk-aac или же --enable-libfaac если нужно)

Попробуйте текущий кодер DivX. Он имеет встроенную поддержку h265: http://www.divx.com/

(как сообщается http://jkdigital.de/h265-hevc-divx-praxisbericht/)

Другие вопросы по тегам