我设法将专辑封面添加到 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
:(。