我想在没有复制视频数据的情况下编写所有视频帧之后,将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知道解决办法..。
发布于 2016-05-02 19:27:57
我还没有以编程方式附加文件,但我能够读取附件。这样收集到的信息至少也可以帮助实现写作。
附件作为附加流处理。附件的流不包含框架。相反,数据作为数据存储到该流的编解码器中。文件名和mime类型作为元数据提供给编解码器。
https://stackoverflow.com/questions/32889119
复制相似问题