it-swarm.com.de

Erstellen von MP4-Videos für HTTP-Streaming

Wie kann ich some.flv oder some.avi oder some.wmv mit FFmpeg konvertieren, um sicherzustellen, dass dieses Video in JW Player abgespielt und gesucht werden kann?

24
abrahab

Dies ist eine Antwort auf den letzten Kommentar von dir @abrahab.

Sie müssen keine Datei mp4box, um sie per Pseudo-Streaming über Nginx zu übertragen. Das MP4-Streaming-Modul erledigt dies unabhängig von der Positionierung der Moov-Atome (mp4box verschiebt das Moov-Atom zum Dateianfang).


Verwenden Sie für den 500-Server-Fehler die Option "-frag" für mp4box? MP4-Streaming-Modul kann keine fragmentierten MP4-Dateien lesen. mp4box wird zum Pseudo-Streaming gut verwendet, um die Videos für eine bessere Suche zu verschachteln. Moov Atom Shifting ist ein zusätzlicher Vorteil.

Ich mache das immer mit mp4box einer FFmpeg-kodierten Datei

MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4

Dies verschachtelt die MP4-Datei standardmäßig in 500 Millisekunden.

9
Vineet

H.264 in MP4

Im Allgemeinen möchten Sie x264-Videos in einem MP4-Container erstellen. Diese Option wird grundsätzlich von jedem Gerät und Browser unterstützt.

Folgendes sollte ausreichen. Stellen Sie sicher, dass Sie die Optionen für Eingabenamen und CRF ersetzen. Letzteres legt die Qualität fest, wobei die normalen Werte zwischen 19 und 25 liegen. Niedriger bedeutet bessere Qualität, aber auch höhere Bitrate:

ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4

Sie können auch Handbremse zum Codieren verwenden, wenn Sie die GUI-Methode mögen.

Verwenden Sie die Option faststart

Verschieben Sie nun das AtomMOOVdes MP4-Containers an den Anfang. Dieses Atom (im Wesentlichen eine Dateneinheit im MP4-Container) enthält wichtige Metadaten zu den Video-/Audiostreams selbst. -movflags faststart sollte genau das tun.

Wenn Ihre FFmpeg-Version diese Option nicht bietet, sollten Sie ein Upgrade in Betracht ziehen. Wenn Sie kein Upgrade durchführen können, können Sie dasselbe mit einem der folgenden Tools erreichen:

  • QTIndexSwapper , eine Adobe AIR-Anwendung

  • MP4Box , frei und Open Source, mit einem Befehl ähnlich dem folgenden, in dem Sie das Intervall ändern können (hier 500):

    mp4box -inter 500 input.mp4

  • qt-faststart in Python , das überall dort funktioniert, wo Python installiert ist.

    qtfaststart input.mp4

Das ist alles.

Bitrate/Qualität steuern

Zum Streamen möchten Sie jetzt möglicherweise die Bitrate einschränken, um innerhalb bestimmter Grenzen zu bleiben. Sie können mehr darüber in meinem Blog-Beitrag über Ratenkontrollmethoden lesen.

Wenn Sie beispielsweise -maxrate 2M -bufsize 2M zu den Kodierungsoptionen hinzufügen, begrenzen Sie die Kodierung auf 2 Mbit/s, was für 720p-Video ausreichend sein kann. Die erforderliche Bitrate hängt natürlich davon ab, wie komplex der Inhalt ist. Dies erfordert einige Versuche und Irrtümer.

43
slhck

Sie können ein nicht-streambares AVI oder MP4 einfach konvertieren, auch ohne alles neu zu kodieren:

ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4

Es ist nicht notwendig, irgendetwas neu zu codieren, da nur das Moov-Atom bewegt werden muss.

5
user769852