Может ли FFmpeg полностью преобразовать mp3-файлы в m4a, то есть скопировать аудио- и видеопотоки (обложка jpeg)?

4515
user182551

Я использую Zeranoe билд FFmpeg. Он отлично преобразует mp3-файлы в m4a-файлы, что касается аудиопотока, но я не могу найти способ сохранить обложку альбома песен в формате jpeg, который ffmpeg по какой-то причине признает как

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

включен в output.m4aфайл. Когда я использую следующую командную строку:

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

Я получаю no tag, codec not currently in the containerошибку. И все же, когда я запускаю ffprobe с .m4aфайлом, созданным iTunes, вот оно:

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

Итак, есть ли способ скопировать кавер-версию песни с помощью конвертации в ffmpeg?

2
Обратите внимание, что, согласно [FFmpeg wiki] (https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio), ** libvo_aacenc ** является худшим кодером AAC (и даже худшим аудиокодером). НЕ используйте ** libvo_aacenc ** ни при каких обстоятельствах. Вместо этого используйте ** libfdk_aac **, если это возможно (FFmpeg с библиотекой libfdk_aac ** не распространяется **, вы должны создать FFmpeg с libfdk_aac самостоятельно), ** libfaac ** также приемлемо, если кодирование с высокой скоростью передачи битов. Meow 9 лет назад 1

3 ответа на вопрос

6
slhck

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à:

Отличная идея, slhck! На самом деле, я перешел на командную строку qaac для преобразования mp3-> m4a. В качестве опции это позволяет импортировать произведения искусства в m4a на месте. user182551 11 лет назад 1
Это мило. Я действительно не уверен, как заставить FFmpeg копировать иллюстрацию, на этом AFAIK нет ресурсов, и копирование потока битов видео не сработает. Кстати, вы можете опубликовать собственное решение в качестве ответа, если хотите. slhck 11 лет назад 0
0
davidmarquesneves

Спасибо!

Полезный пакетный файл Windows:

@ECHO OFF REM Извлечение обложки альбома и изменение размера до 300x300 во временный файл в формате PNG REM, поскольку FFMPEG не может правильно обрабатывать обложку напрямую ... ffmpeg -i% 1 -an -vcodec png -vf scale = 300: -1 arttemp . png -y REM timeout 30

REM Преобразование аудио в AAC LLC в контейнер .M4A (Apple, «Signed»). REM FFMPEG не применяет фильтр LowPass, но REM не так сильно контролирует другие параметры, но в тестах была самая высокая скорость REM VBR (350 ~ 400). Кбит / с) ... ffmpeg -i% 1 -acodec aac -ab 512k -ac 2 -vn% 2 -y Тайм-аут REM 30

REM Применение уже готового изображения обложки, извлеченного из исходного файла REM с помощью этой новой «AtomicParsley» ... AtomicParsley% 2 --artwork arttemp .png --overWrite REM timeout 30

REM Удаление временного файла обложки ... del arttemp .jpg REM timeout 30

0
Steven Penny

У FFmpeg есть открытый вопрос об этой функциональности. В то же время, обложки могут быть добавлены с проектом TagEditor . Добавить:

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

Удалять:

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

Похожие вопросы