我正在使用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?
}
}
我发现在
LangEntry
(avlanguage file)中有一个libavformat
结构,还有一个包含语言及其代码的表,似乎这正是我所需要的。但我不知道怎么用。我找不到任何使用它的例子。在LangEntry
和AVStream
中都没有对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/