Wie kann ich mit ffmpeg mp4 in webm konvertieren?

20

Ich muss 76 mp4-Dateien für den Zweck einer Website, die HTML5-Videos verwendet, in webm konvertieren. Ich spreche von 10 GB MP3-Dateien ... Ich weiß, ich kann ffmpeg einfach bitten, dies zu tun, indem ich Folgendes verwende:

ffmpeg -i input_file.mp4 output_file.webm

Natürlich mache ich es rekursiv durch:

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

Ich habe sogar etwas ausprobiert, das ich irgendwo im Internet gefunden habe:

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

Aber die Sache ist, dass es nicht weniger als eine Woche dauert !!! Was mache ich falsch? Gibt es eine Möglichkeit, dies zu beschleunigen? Wenn ich zu ogg konvertiere, gewinne ich an Geschwindigkeit? Bitte helfen Sie !!!

pr.nizar
quelle
@LordNeckbeard Sie sollten eine Antwort auf der Grundlage dieses Leitfadens schreiben. Außerdem sollte beachtet werden, dass der vpx-Encoder im Vergleich zu x264 selbst bei vernünftigen Einstellungen langsam wie Melasse ist. Wenn Sie nicht gewillt sind, viel Qualität zu opfern, ist beleuchtet unmöglich, um wirklich schnelle Codierungen damit zu erhalten.
Evilsoup
Das Problem betrifft die Kompatibilität. Dies ist eine kleine Kompatibilitätstabelle: {x264: IE (+) Safari (+) Chrome (+) Firefox (-) Opera (-)} {webm: IE (-) Safari (-) Chrome (+) Firefox (+) Opera (+)} Ich weiß, dass Safari und IE den größten Teil des Marktes ausmachen, aber ich bezweifle es ernsthaft und würde auf Firefox und Opera wetten! ;)
pr.nizar
@ pr.nizar Dank der Freigabe von OpenH264 durch Cisco unter BSD unterstützt Firefox jetzt h.264.
Wyatt8740

Antworten:

11

Das Umcodieren von Videos braucht Zeit. Es erfordert auch viel mehr Wissen über Codierungsparameter. Die Standardeinstellungen von ffmpeg sind wahrscheinlich nicht für Sie geeignet und erstellen möglicherweise nicht einmal eine verwendbare Ausgabedatei.

Hier ist ein Anfang:

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

Diese Einstellungen werden auf eine bestimmte durchschnittliche Bitrate (Videobitrate von 3900 kbit) codiert, sodass die Bitrate Spitzenwerte aufweist.

MP4 und WebM verwenden unterschiedliche Video-Codecs, sodass es keine Abkürzung gibt. Video muss transkodiert werden.

Die Codierungsgeschwindigkeit hängt natürlich stark von der Bildgröße, der Bildrate und den Qualitätseinstellungen ab. Bei einer 720p-Codierung ist zu erwarten, dass Sie in den letzten Jahren ungefähr 1: 1 (dh 10 Stunden Video in 10 Stunden) auf einer CPU codieren können. Wenn Sie eine ABR-Codierung mit zwei Durchläufen durchführen, wie im Beispiel im Link angegeben, verdoppeln Sie diese fast.

thomasrutter
quelle
8

Verdoppeln oder halbieren? Es ist also eine Sackgasse. Ich werde nicht mit Bitraten spielen, ich weiß nie, was ich von Qualität oder Größe erwarten soll.

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

Ich poste es für zukünftige Benutzer, tatsächlich habe ich an Geschwindigkeit gewonnen, aber meine CPU arbeitet höllisch: 60 bis 80% auf jedem Kern! Jetzt denke ich, es wird weniger Zeit in Anspruch nehmen: 3 Tage statt 6 oder 7 .. Ich hoffe, es wird nicht kaputt gehen .. ^ _ ^

Trotzdem danke Mann!

Bearbeiten: Schalter -sameq nach Kommentaren von LordNeckbeard entfernt und neon_overload -sameq bedeutet nicht die gleiche "Qualität"

pr.nizar
quelle
3
-sameqbedeutet nicht "gleiche Qualität" und wurde stromaufwärts entfernt. Benutze es nicht. Unter dem Link in meinem Kommentar zu Ihrer Frage finden Sie detaillierte Anweisungen zur libvpx-Codierung.
Logan
2
-sameq bedeutet den gleichen Quantisierer, es ist jedoch unmöglich, Quantisierer zwischen h.264 und VP8 zu vergleichen. Selbst wenn dies funktionieren würde, würden Sie mit ziemlicher Sicherheit fehlerhafte Ergebnisse erhalten, wenn Sie es verwenden.
Thomasrutter
2
Vielen Dank, dass Sie mich darauf aufmerksam gemacht haben! Ich habe meine Antwort bearbeitet.;) Eigentlich habe ich diesen Schalter nicht verwendet, weil ich gesehen habe, dass er noch langsamer wird. Ich habe sogar ffmpeg fallen lassen und avconv verwendet: ES IST SCHNELLER! Die Aufgabe war in anderthalb Tagen erledigt: find ./ -name '* .mp4' -exec bash -c 'avconv -i "$ 0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 " $ {0 %%. Mp4} .webm "'{} \; Ich weiß, ich leite das Thema mit diesem Kommentar um, aber ich dachte, es lohnt sich, es zu sagen. ^ _ ^ Hoffe, es hilft jemandem! ;)
pr.nizar
Was die Qualität angeht, kann ich die Unterschiede zwischen den Originaldateien und den Webmustern nicht erkennen: Es sind fast die gleichen Audio- und Videoqualitäten!
Pr.Nizar
1
Es wird weiterhin empfohlen, entweder einen crf- oder einen Bitratenwert festzulegen, anstatt die Standardeinstellungen von ffmpeg / avconv zu verwenden.
Thomasrutter