Can FFmpeg convert mp3 files into m4a in full, i.e. with both audio and video streams (jpeg cover) copied?
As far as I'm concerned, there's no easy way to tell FFmpeg to set the album artwork for an MP4 container, which you'd typically use for AAC audio (.m4a
). You can however use AtomicParsley to add the artwork later, via command line.
Here's how you can install AtomicParsley:
- All operating systems have binaries from the SourceForge page
- Linux distributions might have it in the packages, i.e.
apt-get install atomicparsley
- OS X through Homebrew with
brew install atomicparsley
But first, we'll need to extract the artwork, e.g. as a JPEG file:
ffmpeg -i input.mp3 artwork.jpg
We can then use AtomicParsley to add the album artwork:
AtomicParsley output.m4a --artwork artwork.jpg
This will not overwrite the original file but create a temporary file instead, e.g. output-temp-15274.m4a
. If you want the original to be overwritten, add the --overWrite
option to the command, e.g.:
AtomicParsley output.m4a --artwork artwork.jpg --overWrite
And voilà:
Related videos on Youtube
USIKPA
Updated on September 18, 2022Comments
-
USIKPA almost 2 years
I use Zeranoe build of FFmpeg. It converts mp3 files into m4a files just fine, as far as the audio stream is concerned, but I can't figure out a way to keep the songs album cover jpeg, which ffmpeg for some reason recognizes as
Stream #0:1: Video: mjpeg, yuvj420p, 200x200 [SAR 120:120 DAR 1:1]
included into the
output.m4a
file. When I use the following command line:ffmpeg.exe -i 09.mp3 -map 0 -codec:a libvo_aacenc -ab 320k -ar 44100 -ac 2 -codec:v copy output.m4a
I get the
no tag, codec not currently in the container
error. And yet, when I run ffprobe with a.m4a
file ctreated by iTunes, there it is:Stream #0:1: Video: mjpeg, yuvj420p, 350x350 [SAR 72:72 DAR 1:1]
So, is there a way to copy the songs cover as well with ffmpeg conversion?
-
Meow over 9 yearsPlease note that, according to FFmpeg wiki, libvo_aacenc is the worst AAC encoder(and even the worst audio encoder). Do NOT use libvo_aacenc in any circumstances. Instead, use libfdk_aac if possible (FFmpeg with libfdk_aac library is unredistributable, you have to build FFmpeg with libfdk_aac by yourself, ), libfaac is also acceptable if encoding with high bitrate.
-
-
USIKPA over 11 yearsGreat idea, slhck! Actually, I switched to qaac command line for mp3->m4a conversion. As an option it allows for artwork to be imported into the m4a on the spot.
-
slhck over 11 yearsThat's nice. I'm really not sure how to get FFmpeg to copy the artwork, there are no resources on this AFAIK and copying the video bitstream won't do. You can post your own solution as an answer here if you like, by the way.