Vor dem Upgrade auf das neueste Ubuntu habe ich den folgenden Befehl verwendet, um MP3 aus einer AVI-Datei zu extrahieren:
$ for x in *.avi; do ffmpeg -vol 100 -ab 160k -ar 44100 -i "$x" "`basename "$x" .avi`.mp3"; done
Das hat funktioniert. Aber seit Ubuntu 12.04 bekomme ichOption sample_rate nicht gefunden.wenn ich versuche, diesen Befehl auszuführen. Wenn ich-ar 44100(oder -sample_rate 44100) extrahiert zwar die MP3, aber in den meisten Fällen passt die Länge der extrahierten MP3 nicht mehr. Das heißt, sie haben eine Länge von 43min oder so, obwohl die AVI-Datei nur 5min lang ist.
Es ist das gleiche Problem mit ffmpeg und avconv. Irgendwelche Ideen, wie man diese Probleme lösen kann?
Antwort1
Versuchen Sie es stattdessen hiermit:
ffmpeg -i "$x" -vol 100 -ab 160k -ar 44100 "`basename "$x" .avi`.mp3"
Vorher standen die Optionen vor der Eingabedatei, aber es sieht so aus, als ob Sie sie für die Ausgabedatei festlegen möchten.
Antwort2
Hast du es mit anderen AVI-Dateien probiert? Die Audiospur der Datei könnte länger sein als die Videospur (nur eine Vermutung).
Haben Sie die Option -t ausprobiert?
-t duration
Restrict the transcoded/captured video sequence to the duration
specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.
Vielleicht möchten Sie versuchen, einen Audio-Bitstream-Filter in ffmpeg einzurichten. Ich habe es noch nie probiert, aber der Filter „remove_extra“ klingt vielversprechend ;)
-absf bitstream_filter
Bitstream filters available are "dump_extra", "remove_extra",
"noise", "mp3comp", "mp3decomp".
Haben Sie darüber nachgedacht, einen Befehl wie ExifTool zu verwenden, um Informationen zur Datei anzuzeigen und Ihre Optionen entsprechend festzulegen (vielleicht sogar die Ausgabe zu analysieren und in Ihrem Skript zu automatisieren)?
Vielleicht könnten Sie die Audiodatei in ein verlustfreies Format extrahieren und dann die Audiodatei transkodieren, aber es muss einen besseren Weg geben.
Wenn Sie das Problem gelöst haben, posten Sie bitte, was Sie getan haben, denn ich bin mit den offensichtlichen Methoden zur Verarbeitung der Tausenden von Videodateien, die ich demultiplexen muss, nicht zufrieden. Ich habe ein ähnliches Skript wie Ihres erstellt, möchte jedoch Audiodateien in der bestmöglichen Qualität erhalten, ohne Platz zu verschwenden. Meine Transcodierungsoptionen werden auf jeden Fall dynamisch sein, daher brauche ich etwas Ausgefeilteres als einen Einzeiler.
Antwort3
ffmpeg -version informiert Sie darüber, welche Build-Optionen aktiviert waren, als ffmpeg für Ubuntu 12.04 kompiliert wurde. Möglicherweise fehlt Ihnen eine Bibliothek oder eine Option wurde während der Build-Zeit nicht aktiviert. In diesem Fall müssten Sie mit aktivierten deaktivierten Optionen neu kompilieren. Die Standard-Abtastrate für ffmpeg beträgt 44100 bei einer Bitrate von 64k.
Antwort4
Installieren Sie das PPA von ffmpeg von ppa:jon-severinsson/ffmpeg und das Problem wird behoben.