首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用avcodec_decode_subtitle2 (FFmpeg)提取(多路复用)字幕

使用avcodec_decode_subtitle2 (FFmpeg)提取(多路复用)字幕
EN

Stack Overflow用户
提问于 2018-05-20 16:46:17
回答 1查看 610关注 0票数 2

我找到了一些代码,稍微编辑了一下,以打印字幕文本,但我不确定如何将字幕保存到文件中(从视频文件中提取,例如mkv)

接下来的代码只是打印了很多行,并不是所有的行都包含字幕文本

代码语言:javascript
复制
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();
//... 
EN

回答 1

Stack Overflow用户

发布于 2020-01-30 17:04:08

您正在检查"rect.x“与SUBTITLE_TEXT,而它应该是"rect.type",如上面的条件所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50433119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档