2015-10-01 1 views
0

Я хочу добавить сообщение protobuf в качестве прикрепления к видеофайлу Matroska (mkv) после того, как все видеокадры были записаны без копирования видеоданных. Это должно быть возможным, так как прикрепление произвольного файла в мы может быть достигнуто с помощью пакета Mkvtoolnix (для JPG):Добавить приложение в Matroska (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 знает решение ...

ответ

0

Я еще не прикреплял файл программно, но я смог прочитать вложение. Собранная таким образом информация может, по крайней мере, помочь в реализации письма.

Вложения обрабатываются как дополнительные потоки. Поток для вложения не содержит фреймов. Вместо этого данные сохраняются как extradata для кодека для этого потока. Имя файла и тип mime передаются в виде метаданных в кодек.

Смежные вопросы