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

Я использую 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?

3 ответа

Насколько я понимаю, нет простого способа сказать FFmpeg установить обложку альбома для контейнера MP4, который вы обычно используете для аудио AAC (.m4a). Однако вы можете использовать AtomicParsley, чтобы добавить рисунок позже через командную строку.

Вот как вы можете установить AtomicParsley:

  • Все операционные системы имеют двоичные файлы со страницы SourceForge
  • В дистрибутивах Linux это может быть в пакетах, т.е. apt-get install atomicparsley
  • OS X через Homebrew с brew install atomicparsley

Но сначала нам нужно извлечь иллюстрацию, например, в виде файла JPEG:

ffmpeg -i input.mp3 artwork.jpg

Затем мы можем использовать AtomicParsley для добавления обложки альбома:

AtomicParsley output.m4a --artwork artwork.jpg 

Это не перезапишет исходный файл, но вместо этого создаст временный файл, например output-temp-15274.m4a, Если вы хотите, чтобы оригинал был перезаписан, добавьте --overWrite опция для команды, например:

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

И вуаля:

Возможно, этот ответ будет немного запоздалым, но для тех, кто заинтересован, теперь вы можете сохранить все потоки только с помощью ffmpeg, например так:

# single file
ffmpeg -i /path/to/input.flac -acodec alac /path/to/output.m4a 
# all the .flac files in the folder
for m in *.flac; do ffmpeg -i "$m" -acodec alac "${m%.flac}.m4a"; done

Для получения дополнительной информации вот потоки ввода / вывода:

Входные данные :

Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 800x800 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc

Выход:

Stream #0:0(und): Audio: alac (alac / 0x63616C61), 44100 Hz, stereo, s16p, 888 kb/s (default)
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 800x800 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc

Спасибо!

Полезный пакетный файл 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

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

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

Удалять:

tageditor -s cover= --max-padding 100000 -f ki.m4a
Другие вопросы по тегам