Я нашел некоторый код, немного его отредактировал, чтобы напечатать текст субтитров, но я не уверен, как сохранить субтитры в файл (извлечение из видеофайла, например, mkv)
следующий код просто печатает много строк, не все из них содержат текст субтитров
std::ofstream out ("/path/to/extracted/subtitles.srt");
while(av_read_frame(pFormatCtx, &pkt) == 0) {
int got_frame = 0;
int ret = avcodec_decode_subtitle2(aCodecCtx, subtitle, &got_frame, &pkt);
if (ret >= 0 && got_frame) {
AVSubtitleRect **rects = subtitle->rects;
for (i = 0; i < subtitle->num_rects; i++) {
AVSubtitleRect rect = *rects[i];
if (rect.type == SUBTITLE_ASS) {
printf("ASS %s", rect.ass);
} else if (rect.x == SUBTITLE_TEXT) {;
printf("TEXT %s", rect.text);
}
}
// it just writes some big file (similar to videofile size)
//out.write((char*)pkt.data, pkt.size);
}
}
out.close();
//...
Задача ещё не решена.
Других решений пока нет …