Ich benutze ffmpeg, um einem MP4 ein JPG hinzuzufügen und ein MP4 zu erstellen.
Da es nur ein Bild gibt, um das Video zu erstellen, frage ich mich, ob es eine Möglichkeit gibt, die Videogröße zu reduzieren.
Befehl:
$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4
Ergebnisse:
image.jpg
= 26,7 K (Bild nicht so klar)audio.mp3
= 64,6 M (54 Minuten)output.mp4
= 80,6 Millionen (Videoergebnis ist nicht so klar, Musik immer noch gut)
Ist es eine vernünftige Größe für MP4?
Antworten:
Zum Hochladen auf YouTube
H.264: kleinste Dateien
Diese Methode verwendet libx264 zum Codieren von H.264-Videos. Es ist langsamer als die unten beschriebene Stream-Kopiermethode, gibt jedoch möglicherweise eine kleinere Dateigröße aus.
Stream-Kopie: schnellster Prozess
Diese Methode überträgt nur Kopien (keine Codierung) des Bildes in den MKV-Container. Es ist super schnell, aber wenn die Größe wichtig ist, kann die oben beschriebene Methode zu einer kleineren Datei führen.
YouTube akzeptiert so gut wie alles, daher verwenden diese Befehle einige Tricks, um die Codierung zu beschleunigen oder die Dateigröße zu verringern und die Qualität hoch zu halten, da YouTube alles neu codiert, was Sie ihm geben. Deinem Player wird es wahrscheinlich nicht gefallen, YouTube jedoch.
In diesen Beispielen wird eine sehr niedrige Bildrate verwendet, die schneller als der Standardwert von 25 fps verarbeitet werden sollte.
Größte Kompatibilität für jeden Spieler
Dies sollte auf fast allem außer auf sehr alten Geräten funktionieren (wechseln Sie
-profile:v main
zu,-profile:v baseline
wenn dies der Fall ist).Wenn Ihr Audioeingang bereits AAC ist, ändern Sie ihn
-c:a aac
auf-c:a copy
, um unnötige Neucodierungen zu vermeiden.Die Codierungszeit ist länger und die Dateigröße größer als die obigen YouTube-Befehle.
Weitere Informationen finden Sie im FFmpeg-Wiki: H.264 .
quelle
Unrecognized option 'preset'. Error splitting the argument list: Option not found
ffmpeg
Befehl und die vollständige Konsolenausgabe des Befehls anzuzeigen, und geben Sie dann den Link in einem Kommentar an.Mit nur den Informationen, die Sie zur Verfügung gestellt haben, kann ich mir das vorstellen.
Gehen wir in Stücke:
Was du dort redest, sind Bilder pro Sekunde (fps), nicht Bitrate. Und Sie haben Recht mit dem Konzept. Nur ein Standbild mit 1 fps wäre kein Problem.
In diesem Fall hätte die Bildgröße kein signifikantes Gewicht, da es sich nur um ein Standbild handelt. Wenn es sich um ein qualitativ hochwertiges Video handelt, ist dies ein anderes Problem.
Die Auflösung, die Sie sagen, ist 1280x720.
Ich sehe den Punkt in der
-loop 1
Option hier nicht, es wird nur den Prozess verlangsamen. Haben Sie verwendet,-shortest
weil die Datei mehr als 1 Eingabestream hat? Wenn nein, gibt es keinen Grund, es zu benutzen. Da Sie verwendet haben, muss-acodec copy
ich davon ausgehen, dass Sie es nicht neu codieren möchten.Für eine Ausgabe von 720p 1fps ohne Neucodierung und ohne Bitrate zu berühren:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Stellen Sie sich vor, es hat mehr als einen Eingabestream und Sie möchten, dass ffmpeg die Codierung am kürzesten Stream beendet:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Wenn Sie nun die Bitrate ändern müssen (sagen wir 1024k als Beispiel);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Siehe: Begrenzen Sie die Ausgangsbitrate
Beachten Sie, dass Sie die Qualität opfern müssen, um dies zu erreichen, wenn Sie an einem Punkt immer noch ein kleineres Video möchten. Andere Möglichkeiten sind das Neucodieren mit verlustbehafteter Komprimierung.
Nach dem, was Sie sagen, den Informationen, die Sie bereitstellen, und dem, was Sie versuchen zu tun, scheint es Ihr Ziel zu sein, Albumcover in MP3 einzubetten. Wenn das Ihr Ziel ist, würde dies Ihren Anforderungen besser entsprechen:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Wenn hier nichts zu Ihren Wünschen passt, geben Sie bitte weitere Informationen.
quelle
-framerate
als Eingabeoption und das Entfernen der Ausgabe-r
. Andernfalls wird die Standardeingabe-Framerate von 25 verwendet und anschließendffmpeg
werden Frames gelöscht, um dies zu erreichen-r 1
. Wenn Sie nur die Eingabe-Bildrate deklarieren, verwendet die Ausgabe dieselbe Bildrate.