将coverart添加到ogg中,其中包含带有ffmpeg的opus音频流,而无需重新编码音频流

将coverart添加到ogg中,其中包含带有ffmpeg的opus音频流,而无需重新编码音频流,ffmpeg,command-line-interface,ogg,Ffmpeg,Command Line Interface,Ogg,我正在尝试使用ffmpeg将coverart添加到ogg文件中: 以下是我的source.ogg和source.jpg文件: $ffprobe-hide_banner source.ogg 输入#0,ogg,来自“source.ogg”: 持续时间:00:03:02.45,开始时间:0.007500,比特率:73 kb/s 流#0:0:音频:opus,48000 Hz,立体声,fltp 元数据: 持续时间:00:03:02.441000000 编码器:Lavf58.20.100 $identi

我正在尝试使用
ffmpeg
将coverart添加到ogg文件中:

以下是我的
source.ogg
source.jpg
文件:

$ffprobe-hide_banner source.ogg
输入#0,ogg,来自“source.ogg”:
持续时间:00:03:02.45,开始时间:0.007500,比特率:73 kb/s
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
$identifSource.jpg
source.jpg JPEG 480x360 480x360+0+0 8位DirectClass 15.1KB 0.000u 0:00.000
我试过这个:

$ffmpeg-hide_banner-i source.ogg-i source.jpg-map 0-map 1-c:a copy-c copy-map_元数据0 dest.ogg-y&&echo&&ffprobe-hide_banner dest.ogg
输入#0,ogg,来自“source.ogg”:
持续时间:00:03:02.45,开始时间:0.007500,比特率:73 kb/s
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
输入#1,图像2,来自“source.jpg”:
持续时间:00:00:00.04,开始时间:0.000000,比特率:3023KB/s
流#1:0:视频:mjpeg,yuvj420p(pc,bt470bg/未知/未知),480x360[SAR 1:1 DAR 4:3],25 tbr,25 tbn,25 tbc
[ogg@0x5655578064c0]流1中不支持的编解码器id
无法写入输出文件#0的标头(编解码器参数不正确?):参数无效
流映射:
流#0:0->#0:0(副本)
流#1:0->#0:1(副本)
最后一条消息重复了1次
[ogg@0x5655577e8540]仅检测到低分为1的格式ogg,可能存在误检测!
dest.ogg:文件结束
我也发现了,但它没有解释如何使用
ffmpeg
实现它

我读过ogg容器中的“METADATA\u BLOCK\u PICTURE”元数据,该元数据可能包含base64中的图片,因此我尝试了以下方法:

$ffmpeg-hide\u banner-i source.ogg-map 0-c:a copy-c copy-metadata\u BLOCK\u PICTURE=“$(base64 source.jpg)”dest.ogg
输入#0,ogg,来自“source.ogg”:
持续时间:00:03:02.45,开始时间:0.007500,比特率:73 kb/s
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
文件“dest.ogg”已存在。覆盖?[y/N]y
输出#0,ogg,到'dest.ogg':
元数据:
元数据块图片:/9j/4AAQSKZJRGABAQAAAQABAD/2WCEABALDA4MCHAODQ4SERATGCAGBYWGDEJR0OOJM9PDKZ
:OddasfxOkerxRTC4ug1rv19iz2HNPK1Xbkefxlz2MberisgBuyLxOAl2NCoEjy2Njy2Nj
..............................................................................
:nVmaS2E/UROWVBH6ORI9Z2L8ZYRFFPKLOOIHSBUK9LFFOC6OBNP1SON8REOOQM2WOVHDDRAAUVK
:KiiCWRRRRBJ//9k=
编码器:Lavf58.20.100
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
元数据块图片:/9j/4AAQSKZJRGABAQAAAQABAD/2WCEABALDA4MCHAODQ4SERATGCAGBYWGDEJR0OOJM9PDKZ
:OddasfxOkerxRTC4ug1rv19iz2HNPK1Xbkefxlz2MberisgBuyLxOAl2NCoEjy2Njy2Nj
:Y2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY//AABEIAWgB4AMBIgACEQED
..............................................................................
:nVmaS2E/UROWVBH6ORI9Z2L8ZYRFFPKLOOIHSBUK9LFFOC6OBNP1SON8REOOQM2WOVHDDRAAUVK
:KiiCWRRRRBJ//9k=
流映射:
流#0:0->#0:0(副本)
按[q]停止,按[?]获取帮助
大小=1658kB时间=00:03:02.41比特率=74.5kbit/s速度=1.01e+03x
视频:0kB音频:1624kB字幕:0kB其他流:0kB全局头:0kB muxing开销:2.100392%
它有点“有效”,但无论是
ffplay
还是
mpv
都无法解析封面艺术:

$ffplay-隐藏标题dest.ogg
[ogg@0x5655577e8540]无法分析封面艺术块。
输入#0,ogg,来自“dest.ogg”:
持续时间:00:03:02.44,开始时间:0.000000,比特率:74 kb/s
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
3.95 M-A:-0.000 fd=0 aq=14KB vq=0KB sq=0B f=0/0
$mpv dest.ogg
播放:dest.ogg
[ffmpeg/demuxer]ogg:无法分析封面艺术块。
(+)音频--aid=1(opus 2ch 48000Hz)
AO:[脉冲]48000Hz立体声2ch浮点
A:00:00:03/00:03:02(2%)
退出。。。(退出)
我还尝试了
-metadata:s:a
以及
-base64
-wrap 0
(我忘了指定,oops:):

$ffmpeg-i source.ogg-map 0-c:a copy-c copy-metadata:s:a metadata\u BLOCK\u PICTURE=“$(base64-wrap 0 source.jpg)”dest.ogg
输入#0,ogg,来自“source.ogg”:
持续时间:00:03:02.45,开始时间:0.007500,比特率:73 kb/s
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
文件“dest.ogg”已存在。覆盖?[y/N]y
输出#0,ogg,到'dest.ogg':
元数据:
编码器:Lavf58.20.100
流#0:0:音频:opus,48000 Hz,立体声,fltp
元数据:
持续时间:00:03:02.441000000
编码器:Lavf58.20.100
元数据块图片:/9j/4AAQSKZJRGABAQAAAQABAD/2WCEABALDA4MCHAODQ4SeratgCGAGBYWGDEJJR0OOJM9PDKZODDASxOqerxRTC4UG1RV19IZ2HNPK1XKEFXLZ2MBERISGBUY2COEJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY//
流映射:
流#0:0->#0:0(副本)
按[q]停止,按[?]获取帮助
大小=1658kB时间=00:03:02.41比特率=74.5kbit/s速度=1.22e+03x
视频:0kB音频:1624kB字幕:0kB其他流:0kB全局头:0kB muxing开销:2.084397%
但是仍然无法正确读取
dest.ogg
jpg coverart:

$ffprobe-hide_banner dest.ogg
ffmpeg -i mysong.ogg -i coverart.jpg song_with_art.ogg