Извлечь (демультиплексировать) субтитры, используя avcodec_decode_subtitle2 (FFmpeg) - PullRequest
0 голосов
/ 20 мая 2018

Я нашел какой-то код, немного отредактировал его для печати текста субтитров, но я не уверен, как сохранить субтитры в файл (извлечь из видеофайла, например, 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();
//... 
...