Solución:
Fondo
FFmpeg admite la codificación HEVC / H.265 desde 2014-2-12 con libx265. Ahora puede usar ffmpeg directamente para codificar HEVC o usar otro codificador y luego convertirlo manualmente en .mp4, .mov o .mkv usando FFmpeg.
Codificadores disponibles
Los codificadores H.265 / HEVC actuales son:
- MulticoreWare x265
- Chino x265
- Codificador DivX HEVC
- Kvazaar
Solo se sugieren MulticoreWare y DivX debido a su tiempo de desarrollo y confiabilidad.
Dos x265
Una confusión es que hay dos proyectos independientes ambos denominados “x265”, uno de un estudiante universitario chino y prácticamente muerto, y otro de una empresa comercial llamada MulticoreWare. Aunque el primero comenzó primero, ahora está prácticamente muerto, y el segundo está en desarrollo activo y cuenta con el respaldo de VideoLAN (el desarrollador de x264).
Cronología del soporte de codificación FFmpeg HEVC
- 2013-10-12 .mov soporte muxing agregado en
53f903b
. - 2014-02-12 soporte de codificación libx265 agregado en
bb6b173
. - 2014-03-09 Se agregó compatibilidad con muxing de Matroska más completa para HEVC
38aee64
. - 2014-03-09 Se agregó un .mov más completo y un nuevo soporte para muxing .mp4
9563e67
.
tl; dr
De todos modos, estos son un conjunto completo de posibilidades actuales de codificación HEVC en el orden de mi recomendación:
-
Usando directamente MulticoreWare libx265 con FFmpeg. Esto significa que con la última versión de Zeranoe ahora puede hacer esto:
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
Nota: Las compilaciones de FFmpeg más nuevas que 2014-03-09 le permiten convertir HEVC en archivos .mp4 ahora (confirmar 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
También puede mezclarlo en Matroska (.mkv):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
-
Usando MulticoreWare x265 independiente y luego mux el archivo resultante con FFmpeg o MP4Box. Esto funcionará con versiones antiguas de FFmpeg que no tienen soporte para 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
Gracias a @Duvrai.
-
Usando DivX HEVC Encoder y luego muxlo.
La forma de usarlo es similar a usar x265 independiente (ver arriba).
Actualizar: FFmpeg tiene ahora soporte de codificación HEVC usando MulticoreWare libx265.
Actualización 2: FFmpeg ahora tiene soporte para muxing HEVC en mp4 Y mov ahora.
ffmpeg agregó la codificación x265 el 12 de febrero de 2014 y la compatibilidad con el contenedor mp4 el 9 de marzo:
ffmpeg -i input -c:v libx265 -c:a copy output.mp4
Nota:
- El comando anterior copiará el audio en su códec original. Si eso no funciona, convierta el audio a AAC omitiendo
-c:a copy
(o reemplazarcopy
conaac
,libfdk_aac
olibfaac
– ordenado en función de la calidad) - al compilar ffmpeg use
--enable-libx265
(y--enable-libfdk-aac
o--enable-libfaac
si es necesario)