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 muxearlo manualmente en .mp4, .mov o .mkv usando FFmpeg.
Codificadores disponibles
Los codificadores actuales H.265 / HEVC son:
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 llamados "x265", uno por un estudiante universitario chino y está prácticamente muerto, y otro por una compañía comercial llamada MulticoreWare. Aunque el primero comenzó primero, está prácticamente muerto ahora, 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 muxing soporte agregado en
53f903b
.
- 2014-02-12 Soporte de codificación libx265 agregado en
bb6b173
.
- 2014-03-09 Se agregó un soporte de muxing Matroska más completo para HEVC
38aee64
.
- 2014-03-09 Más completo .mov y nuevo soporte de muxing .mp4 agregado
9563e67
.
tl; dr
De todos modos, estos son un conjunto completo de posibilidades actuales de codificar HEVC en el orden de mi recomendación:
Directamente utilizando MulticoreWare libx265 con FFmpeg. Esto significa que con la última versión de Zeranoe ahora puedes 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 recientes que 2014-03-09 le permiten mux HEVC en archivos .mp4 ahora (commit 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
También puede enviarlo 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 anteriores 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 mux.
La forma de usarlo es similar a usar x265 independiente (ver arriba).
Actualización: FFmpeg tiene soporte de codificación HEVC usando MulticoreWare libx265 ahora.
Actualización 2: FFmpeg ahora tiene soporte para mezclar HEVC en mp4 y mov ahora.
crf=25
representa en los comandos de ejemplo, aquí hay una guía de CRF: slhck.info/articles/crf