如果我有一个 .opus 文件,如何使用 FFmpeg 设置专辑封面?

如果我有一个 .opus 文件,如何使用 FFmpeg 设置专辑封面?

如果我有一个 .opus 文件,如何使用 FFmpeg 设置专辑封面?

我已成功完成以下操作:

ffmpeg -i Pogo.mp3 -i StellarDrone.png -map 0:0 -map 1:0 -codec copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.mp3

使用Pogo.mp3和作为测试文件。但这显然Stellardrone.png不起作用。.opus

ffmpeg -i Hotlines.opus -i StellarDrone.png -map 0:0 -map 1:0 -codec copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.opus
ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: 
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
Input #0, ogg, from 'Hotlines.opus':
  Duration: 00:04:01.00, start: -0.960000, bitrate: 359 kb/s
    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
    Metadata:
      ARTIST          : ChrisKeya
      FMPS_PLAYCOUNT  : 0
      FMPS_RATING_AMAROK_SCORE: 0.04
      TITLE           : Hotlines
    Stream #0:1: Video: png, rgb24(pc), 1280x720 [SAR 1:1 DAR 16:9], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      comment         : Cover (front)
      title           : ChrisKeya - LateNight [Full EP].png
Input #1, png_pipe, from 'StellarDrone.png':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: png, rgb24(pc), 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
[opus @ 0x55a1a7d72100] 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

特别值得注意的是红色的部分:

[opus @ 0x55af9c499100] Unsupported codec id in stream 1
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

答案1

这个 ffmpeg 命令可以使用:

ffmpeg -i in.opus -i metadata.dat -map_metadata 1 -codec copy out.opus

其中 metadata.dat 是一个文本文件,其组成如下:

;FFMETADATA1
METADATA_BLOCK_PICTURE=<img_blob64>

其中 <img_blob64> 是一些关于图像和图像本身的信息的 base64 编码。不幸的是,形成这个编码的 blob 有点复杂。有关更多信息(包括一些帮助脚本),请参阅在 Linux 中通过命令行将专辑封面嵌入 OGG

相关内容