Saltar al contenido

¿Cómo generar un MP4 con códec H.265 usando FFmpeg?

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 reemplazar copy con aac, libfdk_aac o libfaac – ordenado en función de la calidad)
  • al compilar ffmpeg use --enable-libx265 (y --enable-libfdk-aac o --enable-libfaac si es necesario)
¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 1)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *