Как создать 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/)