Kann FFmpeg mp3-Dateien vollständig in m4a konvertieren, dh sowohl Audio- als auch Video-Streams (JPEG-Cover) kopieren?

4589
user182551

Ich benutze Zeranoe Build von FFmpeg. Es konvertiert MP3-Dateien in m4a-Dateien, was den Audiostrom angeht, aber ich kann keinen Weg finden, die Titel-Album-Cover jpeg der Songs zu behalten, die ffmpeg aus irgendeinem Grund als erkennt

Stream #0:1: Video: mjpeg, yuvj420p, 200x200 [SAR 120:120 DAR 1:1] 

in der output.m4aDatei enthalten. Wenn ich die folgende Befehlszeile verwende:

ffmpeg.exe -i 09.mp3 -map 0 -codec:a libvo_aacenc -ab 320k -ar 44100 -ac 2 -codec:v copy output.m4a 

Ich bekomme den no tag, codec not currently in the containerFehler. Und wenn ich ffprobe mit einer .m4avon iTunes erstellten Datei starte, dann ist es:

Stream #0:1: Video: mjpeg, yuvj420p, 350x350 [SAR 72:72 DAR 1:1] 

Gibt es eine Möglichkeit, das Titel-Cover auch mit der ffmpeg-Konvertierung zu kopieren?

2
Bitte beachten Sie, dass ** libvo_aacenc ** laut [FFmpeg-Wiki] (https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio) der schlechteste AAC-Encoder (und sogar der schlechteste Audio-Encoder) ist. Verwenden Sie ** libvo_aacenc ** unter keinen Umständen. Verwenden Sie stattdessen ** libfdk_aac ** (wenn möglich (FFmpeg mit der Bibliothek libfdk_aac ist ** nicht umverteilbar **, Sie müssen FFmpeg mit libfdk_aac selbst erstellen), ** libfaac ** ist auch zulässig, wenn die Codierung mit hoher Bitrate erfolgt. Meow vor 9 Jahren 1

3 Antworten auf die Frage

6
slhck

Für mich gibt es keine einfache Möglichkeit, FFmpeg mitzuteilen, dass das Album-Artwork für einen MP4-Container festgelegt wird, den Sie normalerweise für AAC-Audio ( .m4a) verwenden würden. Sie können AtomicParsley jedoch verwenden, um die Grafik später über die Befehlszeile hinzuzufügen.

So installieren Sie AtomicParsley:

  • Alle Betriebssysteme verfügen über Binärdateien von der SourceForge-Seite
  • Linux-Distributionen könnten es in den Paketen haben, dh apt-get install atomicparsley
  • OS X durch Homebrew mitbrew install atomicparsley

Zuerst müssen wir das Bildmaterial extrahieren, z. B. als JPEG-Datei:

ffmpeg -i input.mp3 artwork.jpg 

Wir können dann AtomicParsley verwenden, um das Album-Artwork hinzuzufügen:

AtomicParsley output.m4a --artwork artwork.jpg 

Dadurch wird die Originaldatei nicht überschrieben, sondern eine temporäre Datei erstellt, z output-temp-15274.m4a. Wenn das Original überschrieben werden soll, fügen Sie --overWritedem Befehl die Option hinzu, zB:

AtomicParsley output.m4a --artwork artwork.jpg --overWrite 

Und voilà:

Tolle Idee, schlampig! Eigentlich habe ich für die mp3-> m4a-Konvertierung zur qaac-Befehlszeile gewechselt. Optional kann das Artwork vor Ort in das m4a importiert werden. user182551 vor 11 Jahren 1
Das ist schön. Ich bin mir nicht sicher, wie man FFmpeg dazu bringt, das Artwork zu kopieren. Es gibt keine Ressourcen auf dieser AFAIK und das Kopieren des Video-Bitstreams ist nicht geeignet. Sie können hier übrigens Ihre eigene Lösung als Antwort posten, wenn Sie möchten. slhck vor 11 Jahren 0
0
davidmarquesneves

Vielen Dank!

Nützliche Windows-Batchdatei:

@ECHO OFF REM Die Covergrafik von Alben wird ausgeblendet und auf 300x300 in temporäre Dateien im PNG-Format REM skaliert, da FFMPEG die Coverbilder nicht direkt verarbeiten kann. Ffmpeg -i% 1 -an -vcodec png -vf scale = 300: -1 arttemp . png -y REM-Zeitüberschreitung 30

REM Konvertieren von Audio in AAC LLC in einen .M4A-Container (Apple "Signed") REM Der FFMPEG verwendet keinen LowPass-Filter, aber es gibt nicht viele andere Parameter, die mit REM gesteuert werden, aber in Tests war die höchste REM-VBR-Rate (350 bis 400) Kbit / s) ... ffmpeg -i% 1 -acodec aac -ab 512k -ac 2 -vn% 2 -y REM-Timeout 30

REM Das Deckblatt wurde bereits aus der Originaldatei REM mit diesem neuen "AtomicParsley" extrahiert. AtomicParsley% 2 --artwork arttemp .png --overWrite REM Timeout 30

REM Temporäre Cover-Art-Datei löschen ... del arttemp .jpg REM-Timeout 30

0
Steven Penny

FFmpeg hat zu dieser Funktionalität ein offenes Problem . In der Zwischenzeit können Cover mit dem TagEditor-Projekt hinzugefügt werden . Hinzufügen:

tageditor -s cover=ju.jpg --max-padding 100000 -f ki.m4a 

Zu entfernen:

tageditor -s cover= --max-padding 100000 -f ki.m4a