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