在写入所有视频帧而不复制视频数据后,我想将一条protobuf
消息作为附件添加到 Matroska (mkv) 视频文件。这必须是可能的,因为可以使用 MKVToolNix 套件(对于 JPG)将任意文件附加到 mkv:
# add attachment, no copy according to man page
mkvpropedit out.mkv --add-attachment ~/Downloads/hummingbird.jpg
.
.
# get attachment id
mkvmerge -i out.mkv
.
Attachment ID 1: type 'image/jpeg', size 821740 bytes, file name 'hummingbird.jpg'
.
# extract attachment
mkvextract attachments out.mkv 1:./test.jpg
我希望能够通过调用库方法来执行相同的读写周期。最好不需要protobuf
先将消息写入文件(例如,通过传递序列化protobuf
消息的字节数组)。
目前我正在使用libav
从/向 mkv 读取/写入视频数据。因此,我最喜欢的解决方案也只取决于libav
. 如果这不可能,我会考虑引入libEBML
和libMatroska
作为新的依赖项(与 MKVToolNix 相同)。
框架中需要调用哪些关键函数才能实现目标?我很确定mbunkus知道解决方案......