问题

问题

问题

我有2个文件:

  • audio.opus(也可以扩展.opus.ogg:),
  • cover.jpg

我怎样才能ffmpegcover.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 标签编辑器。在您的发行版中安装opustagssudo 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

相关内容