Ich habe potenziell Millionen von HLS-Streaming-Videos, die ich aus Cover-Art und MP3s erstellen kann. Offensichtlich möchte ich die resultierende Bandbreite auf ein Minimum beschränken. Ich habe verschiedene ffmpeg-Flags ausprobiert, die speziell für diese Aufgabe vorgeschlagen wurden, und sogar einige auf dem Apple-Mediensegmentierer, der behauptete, in jedes Segment (Meta-Datei/Meta-Typ) ein Cover-Bild einzufügen. Ich hatte viele Probleme damit, Chrome dazu zu bringen, das Cover bei der Wiedergabe mit HTML5 anzuzeigen, obwohl es in VLC funktionierte. Am Ende hatte ich eine funktionierende Befehlszeile wie diese.
ffmpeg -loop 1 -i 1k_image.jpg -i song_219kbs.mp3 -c:v libx264 -pix_fmt yuv420p -profile:v baseline -c:a aac -strict experimental -b:a 64k -r 1 -shortest song_64k_2fps_baseline.mp4
Das -pix_fmt
Basisprofil schien entscheidend zu sein. Kannst du sehen, was ich tue, das unnötig ist? Gibt es einen besseren Weg, mein Ziel zu erreichen?
Außerdem habe ich mir einige der kommerziellen Cloud-Transcoding-Lösungen angesehen und nicht gesehen, wie man eine dafür konfiguriert. Habe ich die Optionen übersehen?
Wenn Sie nur ein Cover einbetten möchten, können Sie das Ergebnis als mp3 behalten, zum Beispiel:
ffmpeg -i original.mp3 -i cover.png -map 0:0 -map 1:0 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" -id3v2_version 3 -write_id3v1 1 result.mp3
Wenn Sie mp4's erstellen, zB für YouTube, dann schlage ich vor, den Vorgang in zwei Schritte aufzuteilen - erstellen Sie zuerst den Videofilm ohne Tonspur, Dauer etwas länger als die des Tons. Muxen Sie dann Video und Audio zusammen mit der -shortest
Option, die das Video auf die genaue Dauer des Audios kürzt. In Bezug auf die Zeit werden diese beiden Schritte etwas länger dauern als ein einzelner Durchgang, aber Ihr gesamter Arbeitsablauf wird viel einfacher und überschaubarer.
Logan
Peter Kordes
libfdk_aac
. Es hat eine bessere Qualität pro Bitrate als der integrierte AAC-Encoder von ffmpeg. Vergessen Sie auch nicht,-movflags +faststart
das MOOV-Atom an den Anfang der Datei zu setzen (wichtig für das Streaming).