Добавьте обложку альбома в файл OGG/opus из командной строки

Мне удалось добавить обложку альбома в файл OGG/opus с помощью Kid3 - Audio Tagger, но я бы хотел сделать это через командную строку для всех файлов альбома.

Я попытался с ffmpeg, но это не сработало:

$ ffmpeg -i myMP3File.opus -i Back_Cover-SMALLER.jpg -map 0:0 -map 1:0 -c copy -metadata:s:v title="Back_Cover-SMALLER.jpg" -metadata:s:v comment="Cover (back)" out.opus
Input #0, ogg, from 'myMP3File.opus':
  Duration: 00:03:04.25, start: 0.000000, bitrate: 98 kb/s
    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
    Metadata:
      ALBUM           : Toto
      track           : 1/14
Input #1, image2, from 'Back_Cover-SMALLER.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 27608 kb/s
    Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 768x768 [SAR 100:100 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
File 'out.opus' already exists. Overwrite ? [y/N] y
[opus @ 0x565557805300] Unsupported codec id in stream 1
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)
    Last message repeated 1 times

Кто-нибудь знает другой способ?

3 ответа

Вот метод, который декодирует «audio.opus» , а затем перекодирует его в файл «merged.opus» , прикрепляя по пути изображение «coverart.jpg» :

      opusdec --force-wav audio.opus - | opusenc --picture coverart.jpg - merged.opus

На самом деле я не использую этот метод, поскольку мне не нравится перекодирование звука, но он работает и сохраняет файл в формате ogg/opus. Надеюсь, когда-нибудь инструменты opus смогут обрабатывать метаданные без перекодирования. (По состоянию на начало 2021 года их, похоже, не хватает.)

Я предлагаю использовать обертку Matroska вокруг опуса. Это не перекодирует опус.

Это сработало для меня:

mkvmerge -o "Susheela Raman - Tanpa Nama.mkv"   audio.opus  --attach-file cover.jpg

Matroska также позволяет включать обложки разного размера (квадрат, портрет, пейзаж). https://www.matroska.org/technical/cover_art/index.html

Лично я предпочитаю использовать ffmpeg для изменения данных файла и, надеюсь, избегать повторного кодирования, например, добавления глав в видеофайлы, такие как mkv, и даже их поворота.

Я нашел решение, которое работает, но может зависеть от клиента. Когда я открываю аудиофайл OPUS с помощью mpv в Fedora Linux, после добавления файла изображения с тем же именем файла и любым расширением файла изображения, например jpg, программа объединяет их в графическом интерфейсе. Наверняка это должно работать с любым аудиофайлом хотя бы в той же программе.

Я обнаружил, что VLC не предоставляет эту удобную функцию автоматически, но это возможно, если вы добавите такой параметр, как:input-slave=<image_path>.

Сffmpeg, вроде бы немного сложнее, но не страшно и требует видеоконтейнер 1:

      ffm \
  -loop 1 -f image2 -i "$imageFile" \
  -i "$audioFile" -c:a copy -shortest \
  <outputVideoFile>

Этот подход не сработал для меня, используяffplayхотя :(.

Другие вопросы по тегам