我正在使用ffmpeg。请考虑以下代码:

for(i=0; i<pFormatCtx->nb_streams; i++) {
        if (pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO) {
            //how do I get the language of the stream?
        }
}

我发现在LangEntryavlanguage file)中有一个libavformat结构,还有一个包含语言及其代码的表,似乎这正是我所需要的。但我不知道怎么用。我找不到任何使用它的例子。在LangEntryAVStream中都没有对AVCodecContext的引用。

最佳答案

语言输入与你检测语言的目的无关。
实际上,LangEntry表与List of ISO 639-2 codes
语言代码被编码为元数据,因此您应该尝试如下所示来标识语言

AVDictionaryEntry *lang;
for(i=0; i<pFormatCtx->nb_streams; i++)
{
    if (pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO)
    {
       lang = av_dict_get(pFormatCtx->streams[i]->metadata, "language", NULL,0);
       // Check lang->value, it should give 3-letter word matching to one of the LangEntry Table
    }
}

关于c - 如何在ffmpeg中获取音频AVStream的字符串表示形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34070552/

10-14 04:34