问题
我有2个文件:
audio.opus
(也可以扩展.opus.ogg
:),cover.jpg
。
我怎样才能ffmpeg
将cover.jpg
其作为嵌入的“封面”图像放入audio.opus
?
约束条件
- 我不想重新编码音频(不幸的是,
opusenc --picture
似乎超出了范围), - 我不想重新编码图像(jpeg),尽管这不是什么大问题,
- 我不想将图像转换为视频(!),
- 我真的更喜欢使用
ffmpeg
而不是其他工具来做这件事, - 我不想听mp3。
预期结果
正确完成后,它应该是这样的:
$ opusinfo audio_with_cover.opus
Processing file "audio_with_cover.opus"...
New logical stream (#1, serial: 39a74bbb): type opus
Encoded with libopus 1.3.1
User comments section follows...
ENCODER=opusenc from opus-tools 0.1.10
METADATA_BLOCK_PICTURE=3|image/jpeg||1280x720x24|<45952 bytes of image data>
ENCODER_OPTIONS=--bitrate 56
Opus stream 1:
Pre-skip: 312
[...]
或者从ffprobe
:
$ ffprobe audio_with_cover.opus
[ogg @ 0x55675650ca80] 761 bytes of comment header remain
Input #0, ogg, from 'audio_with_cover.opus':
Duration: 00:02:25.64, start: 0.000000, bitrate: 71 kb/s
Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
Metadata:
ENCODER : opusenc from opus-tools 0.1.10
ENCODER_OPTIONS : --bitrate 56
Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720, 90k tbr, 90k tbn (attached pic)
Metadata:
comment : Cover (front)
不可能?
如果您知道这是不可能的,请告诉我,我将在 上打开功能请求ffmpeg
。
答案1
我找不到一个简单的工作解决方案ffmpeg
,所以我转向了opustags
一个易于使用的 opus 标签编辑器。在您的发行版中安装opustags
或sudo apt install opustags
类似的东西。
要添加封面艺术,请使用命令opustags --set-cover cover.jpg audio.opus -i
, 快速将封面艺术添加到 opus 文件中。
作为一个快速的好处,您可以使用 提取封面艺术opustags --output-cover cover.jpg audio.opus
。
第二种解决方案
当我说使用 的工作解决方案时ffmpeg
,我的意思是不重新编码 JPEG 文件,但您不太介意。我找到了一个解决方案,ffmpeg
可以重新编码图像,但保留 OPUS 文件。重新编码图像的缺点是封面艺术的质量被极度压缩。我找不到任何方法来提高 jpeg 图像的质量。命令是:ffmpeg -i audio.ogg -i cover.jpg -c:a copy -disposition attached_pic audio_1.ogg
。
编辑第二个解决方案
要为解决方案制作更高质量的缩略图ffmpeg
,您可以将转换为 Theora 文件的图像的 CRF 设置为 2,并使用ffmpeg -i audio.ogg -i cover.jpg -c:a copy -q:v 2 -disposition attached_pic audio_1.ogg
.由于 Theora 文件是有损的,因此使用此命令时缩略图始终会与原始文件略有偏差。
答案2
您可以使用-metadata:s:a METADATA_BLOCK_PICTURE=...
手动添加图像数据,但提供的数据必须遵循Xiph Vorbis 注释结构。
首先,您必须创建一个匹配的标头块(幸运的是,当图像大小等保持不变时可以重复使用),然后将其与 Base64 编码的图像数据连接起来。
有关更多详细信息,请参阅https://superuser.com/a/1816195/1860118