Come convertire velocemente mp4 in webm usando ffmpeg?


20

Devo convertire 76 file mp4 in webm allo scopo di un sito Web che utilizza video HTML5. Sto parlando di 10 GB di file mp4 ... So che posso semplicemente chiedere a ffmpeg di farlo usando:

ffmpeg -i input_file.mp4 output_file.webm

Ovviamente lo farò ricorsivamente:

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

Ho anche provato qualcosa che ho trovato da qualche parte su Internet:

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

Ma il fatto è che non mi ci vorrà meno di una settimana !!! Che cosa sto facendo di sbagliato? C'è un modo possibile per accelerarlo? Se converto in ogg guadagnerò sulla velocità? Per favore aiuto!!!



@LordNeckbeard dovresti scrivere una risposta basata su quella guida. Inoltre, va notato che l'encoder vpx è lento come melassa, anche con impostazioni sane ecc., Rispetto a x264 ... a meno che tu non sia disposto a sacrificare molta qualità, acceso è impossibile ottenere codifiche molto veloci con esso.
evilsoup,

Il problema riguarda la compatibilità. Questa è una piccola tabella di compatibilità: {x264: IE (+) Safari (+) Chrome (+) Firefox (-) Opera (-)} {webm: IE (-) Safari (-) Chrome (+) Firefox (+) Opera (+)} So che dicono che Safari e IE detengono la maggior parte del mercato, ma ne dubito seriamente e scommetterei su Firefox e Opera! ;)
pr.nizar

@ pr.nizar Grazie a Cisco che rilascia OpenH264 sotto BSD, firefox ora supporta h.264.
Wyatt8740,

Risposte:


11

La transcodifica del video richiede tempo. Ci vuole anche molta più conoscenza dei parametri di codifica; È improbabile che le impostazioni predefinite di ffmpeg siano adatte a te e potrebbero anche non creare un file di output utilizzabile.

Ecco un inizio:

http://blog.pcode.nl/2010/10/17/encoding-webm-using-ffmpeg/

Queste impostazioni codificheranno su un bitrate medio particolare (bitrate video di 3900kbit), quindi ci saranno picchi nel bitrate.

MP4 e WebM usano codec video diversi, quindi non ci sono scorciatoie; il video deve essere transcodificato.

La velocità di codifica, ovviamente, varierà immensamente a seconda delle dimensioni, della frequenza dei fotogrammi e delle impostazioni della qualità. Per una codifica a 720p potresti aspettarti di essere in grado di codificare all'incirca 1: 1 (ovvero 10 ore di video in 10 ore) su una CPU degli ultimi due anni. Se si esegue la codifica ABR a due passaggi come nell'esempio fornito nel collegamento, quasi il doppio.


8

Raddoppiato o tagliato a metà? Quindi è un vicolo cieco .. Non giocherò con i bitrate, non so mai cosa aspettarmi da qualità o dimensione .. Penso che mi atterrò a questo e farò trattenere il cliente fino alla fine della conversione ..

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

Lo sto pubblicando per i futuri utenti, in realtà ho guadagnato sulla velocità ma la mia CPU funziona come l'inferno: dal 60 all'80% su ogni core! Ora penso che ci vorrà meno tempo: 3 giorni invece di 6 o 7 .. Spero che non lo scomponga .. ^ _ ^

Grazie comunque amico!

Modifica: rimosso l'interruttore -sameq dopo i commenti da LordNeckbeard e neon_overload -sameq non significa la stessa "qualità"


3
-sameqnon significa "stessa qualità" ed è stato rimosso a monte. Non usarlo. Fai riferimento al link nel mio commento alla tua domanda per istruzioni dettagliate sulla codifica di libvpx.
llogan

2
-sameq significa lo stesso quantizzatore, tuttavia è impossibile confrontare i quantizzatori tra h.264 e VP8, quindi anche se funzionasse, quasi sicuramente otterresti risultati rotti se lo usassi - quindi non farlo.
thomasrutter,

2
Grazie amico per avermi portato la mia attenzione! Ho modificato la mia risposta. Il lavoro è stato svolto in un giorno e mezzo con questo: find ./ -name '* .mp4' -exec bash -c 'avconv -i "$ 0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 " $ {0 %%. Mp4} .webm "'{} \; So che sto deviando l'argomento con questo commento, ma ho pensato che valesse la pena dirlo .. ^ _ ^ Spero che aiuti qualcuno! ;)
pr.nizar

Per la qualità davvero non posso dire le differenze tra i file originali e quelli web trancoded: sono quasi le stesse qualità audio e video!
pr.nizar,

1
Si consiglia comunque di impostare un valore crf o bitrate invece di utilizzare le impostazioni predefinite di ffmpeg / avconv, qualunque essa sia.
thomasrutter,
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.