从命令行将专辑封面添加到 OGG/opus 文件

从命令行将专辑封面添加到 OGG/opus 文件

我设法将专辑封面添加到 OGG/opus 文件中,Kid3 - 音频标记器但我想通过命令行对专辑的所有文件执行此操作。

我尝试使用 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

有谁知道其他方法吗?

答案1

我建议使用 Matroska 包装器来包装作品。它不会对作品进行重新编码。

这对我有用:

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

Matroska 还允许您添加不同尺寸的封面艺术(方形、肖像、风景)。https://www.matroska.org/technical/cover_art/index.html

答案2

这是一个解码的方法“音频.opus”然后将其重新编码到文件中“合并.opus”,附加图片“封面艺术.jpg”一路上:

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

我实际上并不使用这种方法,因为我不喜欢转码音频,但它确实有效,并将文件保留为 ogg/opus 格式。希望有一天opus 工具将能够处理编辑元数据而无需重新编码。(截至 2021 年初,他们似乎还缺乏这一点。)

答案3

我个人更喜欢使用 ffmpeg 来改变文件数据,并且希望避免重新编码,例如向 mkv 等视频文件添加章节,甚至旋转它们。

我找到了一个可行的解决方案,但可能特定于客户端。当我在 Fedora Linux 上使用 mpv 打开 OPUS 音频文件时,在我添加具有相同文件名的图像文件后,无论图像文件扩展名是什么,例如 jpg,程序都会在 GUI 中将它们合并。当然,这必须适用于至少同一程序中的任何音频文件。

我发现 VLC 不会自动提供这个便捷的功能,但是如果添加诸如 之类的参数则是可能的:input-slave=<image_path>

使用ffmpeg,它似乎有点复杂,但并不可怕,并且需要一个视频容器1

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

但是这种方法对我来说不起作用ffplay:(。

相关内容