Come generare un MP4 con codec H.265 utilizzando FFmpeg?

Voglio codificare un file video a H.265. L'ultima versione di ffmpeg dovrebbe essere supportta da H.265 ( Source ).

Tuttavia, non sono riuscito a trovare informazioni sul command esatto.

Non so quale biblioteca dovrei indicare dopo -vcodec .

Io uso il più recente Zeranoe FFmpeg Build (git-c78a416 (2013-10-26)).

background

FFmpeg support la codifica HEVC / H.265 dal 2014-2-12 con libx265. Ora è ansible utilizzare ffmpeg direttamente per codificare HEVC o utilizzare un altro codificatore quindi manualmente mux che in .mp4, .mov o .mkv utilizzando FFmpeg.

Encoder disponibili

Gli encoder correnti H.265 / HEVC sono:

  • MulticoreWare x265
  • Cinese x265
  • Encoder HEVC DivX
  • Kvazaar

Solo il MulticoreWare e il DivX sono suggeriti a causa del loro tempo di sviluppo e l'affidabilità.

Due x265

Una confusione è che ci sono due progetti indipendenti entrambi denominati "x265", uno da uno studente universitario cinese e sono praticamente morti, e un'altra da una società commerciale chiamata MulticoreWare. Anche se l'ex ha iniziato per la prima volta, è praticamente morto ora, e quest'ultimo è sotto sviluppo attivo ed è approvato da VideoLAN (lo sviluppatore di x264).

Timeline di FFmpeg HEVC Encoding Support

  • 2013-10-12 .mov muxing supporto aggiunto in 53f903b .
  • 2014-02-12 supporto di codifica libx265 aggiunto in bb6b173 .
  • 2014-03-09 Più completo supporto Matroska muxing per HEVC aggiunto in 38aee64 .
  • 2014-03-09 Più completo .mov e nuovo supporto 9563e67 .mp4 aggiunto in 9563e67 .

tl; dr

Comunque, queste sono una serie completa di possibili possibilità di codifica HEVC in base alla mia raccomandazione:

  • Utilizzo diretto di MulticoreWare libx265 con FFmpeg. Ciò significa che con l'ultima versione di Zeranoe puoi farlo:

     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: le versioni di FFmpeg più recenti del 2014-03-09 consentono di mux HEVC in file .mp4 (commit 9563e67):

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

    Puoi anche mux in Matroska (.mkv):

     ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv 
  • Utilizzando Standalone MulticoreWare x265 e quindi mux il file risultante con FFmpeg o MP4Box . Questo functionrà con le vecchie build di FFmpeg che non dispongono del supporto 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 

    Grazie a @Duvrai.

  • Utilizzando Encoder HEVC di DivX e poi mux it.

    Il modo d'uso è simile all'uso di standalone x265 (vedi sopra).

Aggiornamento: FFmpeg ha il supporto di codifica HEVC utilizzando MulticoreWare libx265 ora.

Aggiornamento 2: FFmpeg ha ora il supporto per muxing HEVC in mp4 e muove adesso.

ffmpeg ha aggiunto la codifica x265 il 12 febbraio 2014 e il supporto del contenitore mp4 il 9 marzo:

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

Nota:

  • Il command precedente copierà l'audio nel suo codec originale. Se ciò non funziona, convertire l'audio in AAC omettendo -c:a copy (o sostituire la copy con aac , libfdk_aac o libfaac – ordinata a livello di qualità)
  • quando si compila l'uso di ffmpeg --enable-libx265 (e --enable-libfdk-aac o --enable-libfaac se necessario)

Prova l'encoder corrente divx. Ha sviluppato il supporto per h265: http://www.divx.com/

(come riportto http://jkdigital.de/h265-hevc-divx-praxisbericht/ )