Di quale gruppo di script ffmpeg ho bisogno per ottenere "Video per tutti" compatibile con HTML5?


12

Quale elenco di comandi dovrei fare in ffmpeg / mencoder / some_other_CLI_app per ottenere un video nei formati giusti per usare Video for Everybody ?

cioè c'è una sottigliezza che impedisce che ci sia un tutorial meccanico che dice

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

Quindi copiare e incollare il codice Video for Everybody nella tua pagina?

Il mio obiettivo è di avere un video incorporato nella mia pagina web personale ospitato da me. È preferito HTML5 con flashback, quindi il modo più semplice sembra essere Video per tutti. Ma quella pagina lascia la parte più complicata, codificando il video in tutti i diversi formati, al lettore per capire leggendo un lungo e completo articolo sui formati video . Sicuramente questo non è necessario. Potrei fornire un elenco di comandi per un utente di convertire ciecamente un file audio in diversi formati. Speriamo che un guru di ffmpeg possa fare lo stesso per i video.


1
Piccolo commento ai tuoi esempi di pseudocodice: non esiste .movun video HTML5 e nemmeno l' h.264estensione. Non v'è .264 , che è la cruda bytestream allegato B per le unità NAL. La codifica video non è scienza missilistica, ma è necessario investire un po 'di tempo per conoscere i concetti.
slhck,

Risposte:


21

Nota: questa risposta è stata pesantemente modificata dalla sua pubblicazione originale. È il 2017 adesso; lo streaming funziona in modo diverso rispetto al passato. Questa guida presuppone il semplice download progressivo di uno stream video a una determinata risoluzione, senza streaming adattivo.

Requisiti

Prima di tutto, assicurati di scaricare una ffmpegversione recente (scarica una build statica; non chiamare apt-get install ffmpego simile). Idealmente, compilalo tu stesso . Non ci vuole troppo tempo.

Per generare video supportati dalla maggior parte dei browser, controlla sempre le ultime tabella di compatibilità . Non esiste un singolo codec / formato che funzioni in tutti i browser, ma se generi H.264 in MP4 e VP9 in WebM, con il rispettivo codec audio, avrai il supporto per Chrome, Firefox, Safari e alcune versioni di IE.

WebM (VP9 / Vorbis)

Seguire le raccomandazioni nella guida FFmpeg VP9 e utilizzare un approccio di codifica a due passaggi con vincoli di velocità:

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm

Il bitrate target dipende dalla risoluzione, dalla frequenza dei fotogrammi, dal tipo di contenuto e dalla qualità desiderata. 2,5 MBit / s dovrebbero essere un buon compromesso per i video HD a 30 fps. Vedi questa guida di Google per alcuni consigli.

MP4 (H.264 / AAC)

Segui le raccomandazioni nella guida H.264 di FFmpeg e utilizza un approccio di codifica a due passaggi con vincoli di velocità:

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4

Qui, il bitrate target dovrebbe essere di circa il 50% superiore rispetto al video VP9, ​​poiché H.264 non è così efficiente. Aggiungi l' -movflags faststartopzione al secondo passaggio per velocizzare il caricamento iniziale del video.

Per l'impostazione delle opzioni audio, consultare la guida alla codifica AAC .


1
La versione 2013-12-19 di uno dei tuoi paragrafi si interrompe a metà frase. "L'audio è di nuovo predefinito a 128 kBit / s, ma è possibile impostare q: a per bitrate variabile, dove i valori vanno da 0 a 500. 100 è predefinito e superiore significa migliore. Se"
Alan De Smet,

@slhck ha molto senso, ma i miei due centesimi sono che lasci cadere Ogg e lo sostituisci con mpegts / m3u8 per supportare tutti i dispositivi iOS o quelli che accettano HLS. Puoi riutilizzare i file .mp4 e aggiungere semplicemente l'elaborazione mpeg-ts in ffmpeg.
Paul Gregoire,

@Mondain In effetti, ma MPEG-TS / .m3u8 non è generalmente un video compatibile con HTML5. Hai bisogno di un server HLS e devi sapere qualcosa in più sullo streaming, che non rientra nell'ambito di questa domanda.
slhck,

Aspetti positivi, ma dalla mia esperienza finora un semplice server http può servire m3u8 a un tag video. L'unica cosa che si deve fare normalmente è aggiungere i tipi mime per m3u8 e ts alla rispettiva configurazione del server.
Paul Gregoire,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.