I've been stuck in adding album art to mp3 files.
I've already researched and Googled this issue but haven't found a solution yet. The ffmpeg
documentation recommends this script to add image (album art) to mp3:
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
But it doesn't work. My console output is:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
I looked for another solution and got this:
ffmpeg -i input.mp3 -i cover.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
This returns the same output:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
Anybody can help me, please?
I am using ubuntu 12.04 and ffmpeg version 0.8.6-4:0.8.6-0.
Thanks.
With Recent version,
ffmpeg -i in.mp3 -i test.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.mp3
Use -map
to associate input stream to the output
Use -c copy
to directly demux/remux
The -id3v2_version 3
is what is missing in your command line. Note that that wil write an IDV2.3 but you can ask for a 2.4 (-id3v2_version 4
)
with the -id3v2_version 3
option the -metadata
option will be well interpreted
Note: the metadata comment is case-sensitive.
There is an important thing to notice here, that made me loose an hour of work:
ffmpeg -i in.mp3 -i test.jpeg -map 0:0 -map 1:0 -codec copy -id3v2_version 3 \
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.mp3
The f
in comment="Cover (front)"
must be lowercase. If not, the picture type in the ID3 header will not be set !
Another hint that might help somebody: To avoid that a JPEG cover image is converted to png, you have to set -codec copy
.
the problem is that you are not defining what codec you want to copy. In case of the audio should be -c:a copy
the cover is recognized as video (go figure!!), so -c:v copy
ffmpeg -i audio-in.mp3 -i picture.png -c:a copy -c:v copy -map 0:0 -map 1:0 -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" audio-out.mp3
This is how I converted a different input/source format (in this example video.ts) to MP3 and also added cover art to the result MP3 all in one go (one command):
ffmpeg -ss 5 -to 13 -i video.ts -i logo.png -map 0:a -map 1:0 -c:1 copy -b:a 320k -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" result.mp3
If ffmpeg fails with error, try to omit -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)"
from the command.
Option | Required? | Description |
---|---|---|
-ss 5 |
OPTIONAL | specifies the start time (in seconds) from the input |
-to 13 |
OPTIONAL | specifies the end time (in seconds) from the input |
-i video.ts |
- | the first input (file to convert) |
-i logo.png |
- | the second input (album/cover art) |
-map 0:a |
- | from the input 0 (aka video.ts), selects the audio (a ) |
-map 1:0 |
- | from the input 1 (aka logo.png), selects the first stream (0 ) |
-c:1 copy |
OPTIONAL | sets the codec for second input (image) to copy (no conversion) |
b:a 320k |
OPTIONAL | sets the bitrate for audio stream to 320k ; see accepted values in footnote 1
|
Thanks to konsolebox for this Stack Overflow answer.
1: Valid bitrates for b:a
option:8k
|16k
|24k
|32k
|40k
|48k
|64k
|80k
|96k
|112k
|128k
|160k
|192k
|224k
|256k
|320k
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With