Zunächst sollten Sie den Unterschied zwischen der Verwendung von FFmpeg-Profilen und den direkten Befehlszeilenoptionen verstehen. -vpre
verwendet eine .ffpreset
Datei, die sich in /usr/share/ffmpeg/
oder überall dort befindet, wo ffmpeg installiert wurde. Es handelt sich um eine Reihe von Option = Wert- Paaren, und in Ihrem Fall hätten Sie es selbst definieren müssen (zumindest kenne ich kein baseline
mit ffmpeg geliefertes Preset).
Ich würde empfehlen, keine Voreinstellungen zu verwenden, es sei denn, Sie haben sie selbst erstellt und wissen, wozu die Befehlszeilenoptionen dienen. Ich benutze ffmpeg seit Jahren und habe nie Presets verwendet - ich musste es nie wirklich.
Eine typische Befehlszeile zum Generieren von H.264-Videos, die mit den meisten Geräten kompatibel sind, lautet:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Einige Notizen:
H.264 / AAC ist die beste Kombination für eine breite Unterstützung in HTML5. Browser ohne H.264-Decoder benötigen jedoch auch ein VP8 / Vorbis-Video. Einige Befehlszeilenbeispiele finden Sie in dieser Antwort . Weitere Codecs finden Sie auch auf der Browser-Support- Seite von Wikipedia.
H.264 funktioniert auch auf Mobilgeräten.
Die Optionen -profile:v baseline
und -level 3.0
werden nur für alte mobile Geräte benötigt, die keine CPU-intensiven Funktionen von H.264 verarbeiten können. Sie können diese normalerweise weglassen oder stattdessen verwenden -profile:v main
.
Das CRF legt die Qualität fest (18–28 ist ein angemessener Bereich, niedriger bedeutet bessere Qualität). Sie können natürlich auch eine feste Bitrate mit -b:v 1000k
oder ähnlichem verwenden. Wählen Sie eine Bitrate, die der Auflösung des Videos entspricht. Einige Geräte mit geringem Stromverbrauch sind möglicherweise nicht in der Lage, unnötig hohe Bitraten zu verarbeiten.
Die -movflags faststart
Option ist für das Streaming, da sie die Container Metadaten an den Anfang der Datei statt so dass es am Ende bewegt. Dadurch kann die Wiedergabe sofort gestartet werden, anstatt warten zu müssen, bis die Datei vollständig geladen ist.
Es kommt jedoch darauf an, den kleinsten gemeinsamen Nenner für alle Geräte zu finden, auf die Sie abzielen, die möglicherweise nicht immer vorhanden sind. Sicherlich möchten Sie keinen anderen ( dh schlechteren ) Codec als H.264 verwenden. Tatsächlich wäre es auch nicht ratsam, Clients, die Main oder High Profile dekodieren können, Baseline-codiertes Video anzubieten. Sie würden Qualität gegen reduzierte Dekodierungskomplexität abwägen.
Nach meiner Erfahrung können Android-Geräte Baseline H.264 mit AAC-LC-Audio in einem MP4-Container problemlos wiedergeben. Ich hatte noch nie Probleme damit. In der Tat können einige Geräte auch höhere Profile spielen, obwohl dies nicht offiziell unterstützt wird. iOS unterstützt im Allgemeinen auch Baseline H.264, aber Sie können das Hauptprofil auf einigen Geräten auch verwenden. In diesem Beitrag (der etwas veraltet ist) finden Sie einige Richtlinien.
Wenn Sie Benutzer mit Wiedergabeproblemen haben, müssen Sie herausfinden, welches Video Probleme verursacht, und weitere Details zu der von ihnen verwendeten Hardware und Player-Software erhalten. Dann könnten wir über die Fehlerbehebung in diesem speziellen Fall sprechen.