Ich habe eine Reihe von MP3-Dateien mit unterschiedlicher Länge. Ich möchte es auf 50% -60% Länge kürzen. Sagt von 1 Minute bis 30 Sekunden. Es sollte mit ffmpeg trivial sein. Aber ich weiß nicht, wie ich die ursprüngliche Länge als Grundlage für die Verarbeitung mit ffmpeg bestimmen soll.
Hat jemand eine Idee?
\n
, um auch eine neue Zeile zu drucken.> mp3info -p "%S\n" sample.mp3
// Gesamtzeit in Sekundenffmpeg
Gibt alles aus, was er über die Datei weiß, wenn Sie ihm keine anderen Argumente geben. Verwenden Siegrep
diese Option, um alles außer der "Dauer" zu entfernen:Sie könnten auch verwenden
mplayer
. Grep für Zeile "ID_LENGTH =":quelle
TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH
die Gesamtlänge des Audios in allen Dateien in Sekunden drucken. Es kann wahrscheinlich effizienter gemacht werden, aber da ich es einmalig geschrieben habe, war es gut genug für meine Bedürfnisse. (Der zweite awk-Aufruf entfernt Dezimalstellen, sodass das Ergebnis nicht 100% genau ist, aber wieder gut genug für meine Bedürfnisse.)Estimating duration from bitrate, this may be inaccurate
. Ich denke, diese Antwort ist nur mit konstanter Bitrate MP3 gültig .Interessanterweise gibt die EXIFTool- Anwendung die MP3-Dauer als letzte Zeile an!
quelle
Nur eine andere Möglichkeit, die Dauer nur mit
ffmpeg
und zu ermittelngrep
:quelle
Die Lösungen, die verwendet werden
ffmpeg
, sind für mich etwas fragil, da sie Ausgaben analysieren, die nicht als Schnittstelle konzipiert sind. Trotzdem werden sie wahrscheinlich noch einige Jahre weiterarbeiten.ffmpeg
kommt mit einem Toolffprobe
zum Abrufen von Informationen zu Audiodateien (viele Formate, einschließlich MP3) und kann maschinenlesbare Ausgaben produzieren. Der folgende Befehl ruft die Song-Dauer ab.quelle
ffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
Ich persönlich verwende Mplayer , um die Informationen zu extrahieren, hauptsächlich, weil ich sie bereits installiert habe und nicht die Mühe habe, unnötig neue Software zu installieren. Der Vorteil dabei ist, dass es nicht auf MP3-Dateien beschränkt ist und mit jeder Mediendatei funktionieren sollte, die Mplayer verarbeiten kann. Der folgende Einzeiler gibt die Länge der Spur in Sekunden zurück.
quelle
Sie können ffmpeg verwenden, um die Dauer der Datei abzurufen. Benutz einfach:
quelle
Ich hatte das gleiche Problem und fand, dass der mplayer-Befehl (goldPseudo) gut funktionierte, aber ich stellte später fest, dass beim Öffnen eines Albums in RhythmBox in der Statuszeile die Anzahl der Titel, die Gesamtspielzeit und die Disc-Größe angezeigt werden.
quelle
Hier ist meine einfache Verwendung unter Bezugnahme auf oben.
Ich sende diesen Wert an die Variable mp3_full_length
Vielen Dank über Menschen! Ich verwende Ihre Ideen und Kenntnisse. Vielen Dank für das Lesen. Ich wünsche Ihnen einen schönen Tag! ;)
quelle