Ich weiß nicht, ob ich das richtig frage, aber hier ist sie: Ich habe zu meinem Geburtstag eine DVD-Box bekommen und die Dateien transkodiert, um sie zum Ansehen auf meinem Computer zu speichern. Nachdem ich die Rohdateien auf meinen Computer übertragen hatte, komprimierte ich sie mit dem folgenden Batch-Befehl:
INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
mv "$i.ts" "$i.mp4"
sleep 3
done
Das Ergebnis war eine tolle Komprimierung und Qualität, aber wenn ich mir den Ordner anschaue, in dem sich die Dateien befinden, sind die Symbole nur graue Kästchen, während die Originaldateien im selben Ordner ein Bild des Videos angezeigt hatten. (Lol, ich weiß, es ist nur kosmetisch, aber es nervt mich :)
Wenn ich den Befehl verwende;
ffmpeg -i input.mp4 -vcodec h264 -acodec libfaac output.mp4
Das Bildsymbol wird einwandfrei angezeigt, aber es wird als (AVC1) statt als (h264) codiert, was ich nicht möchte.
Gibt es eine Möglichkeit, dies in meinem Batchdateibefehl zu berücksichtigen, damit das Dateisymbol wie gewünscht angezeigt wird? Danke!
Antwort1
Dank der von Gyan bereitgestellten Informationen konnte ich für meine Frage eine effektive Lösung zur Änderung meines Batchdateibefehls finden, die wie folgt lautet.
INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
ffmpeg -i "$i.ts" -bsf:a aac_adtstoasc -c copy "$i.mp4"
rm *.ts
sleep 3
done
Angesichts der von Gyan bereitgestellten Informationen können wir jedoch den Schritt des Kodierens in eine Übertragungsstreamdatei und des anschließenden Remuxens in MP4 überspringen und die MP4-Datei einfach im folgenden Batch-Befehl komprimieren.
INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.mp4"
sleep 3
done
Beachten Sie, dass dies mit einer älteren Version von ffmpeg durchgeführt wurde. Verwenden Sie für neuere Versionen von ffmpeg Folgendes, um Ihr Video zu komprimieren und dabei ein korrektes Bildsymbol des zu komprimierenden Videos beizubehalten;
INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec aac "$i.mp4"
sleep 3
done
Das einzige Problem bei der Verwendung des Batchdateibefehls besteht darin, dass dem Dateinamen eine zusätzliche Dateierweiterung hinzugefügt wird (Dateiname.mp4.mp4). Dieses Problem behebe ich mit Pyrenamer, um die zusätzliche Dateierweiterung in allen Dateien in mehreren Verzeichnissen mit einem einzigen Klick zu entfernen.
Wenn jemand weiß, wie man dies innerhalb des Batch-Befehls anspricht, hinterlassen Sie bitte einen Kommentar und ich werde diese Antwort ändern. Ich habe Variationen des Befehls „mv“ ausprobiert, aber ohne Erfolg.