关于使用MediaInfo获取ISO-639语言信息的技术咨询
使用MediaInfo获取ISO-639语言信息的技术咨询
嘿,刚好我之前在C#项目里用过MediaInfo处理媒体元数据,来给你说说怎么获取ISO-639语言信息~
首先直接回答你的疑问:你提到的mediaInfo.Get(StreamKind.Audio, 0, "Language")这个调用确实能拿到语言信息,而且大多数情况下返回的就是符合ISO-639标准的代码——可能是双字母的ISO-639-1格式(比如en代表英语),也可能是三字母的ISO-639-2格式(比如eng),具体取决于媒体文件本身存储的元数据类型。
如果想要更精准地指定获取某一类ISO-639代码,你可以用更明确的参数:
- 要获取ISO-639-1双字母代码,用
mediaInfo.Get(StreamKind.Audio, 0, "Language_ISO639-1") - 要获取ISO-639-2三字母代码,用
mediaInfo.Get(StreamKind.Audio, 0, "Language_ISO639-2")
给你贴个简单的代码示例,方便你参考:
using MediaInfoDotNet; // 这里假设你用的是NuGet上的MediaInfoDotNet封装库 // 初始化MediaInfo实例 var mediaInfo = new MediaInfo(); // 打开目标媒体文件 mediaInfo.Open(@"D:\your-media-file.mkv"); // 获取音频流的各类语言标识 string iso639_1 = mediaInfo.Get(StreamKind.Audio, 0, "Language_ISO639-1"); string iso639_2 = mediaInfo.Get(StreamKind.Audio, 0, "Language_ISO639-2"); string generalLang = mediaInfo.Get(StreamKind.Audio, 0, "Language"); // 输出结果 Console.WriteLine($"ISO-639-1 代码: {iso639_1 ?? "未找到语言元数据"}"); Console.WriteLine($"ISO-639-2 代码: {iso639_2 ?? "未找到语言元数据"}"); Console.WriteLine($"通用语言标识: {generalLang ?? "未找到语言元数据"}"); // 记得关闭资源 mediaInfo.Close();
另外要提醒你几个小细节:
- 如果媒体文件本身没有嵌入语言元数据,这些调用都会返回空字符串,所以使用前最好做个判空处理
- 如果你用的是官方的MediaInfo .NET绑定而非第三方封装,参数名称可能会略有不同,遇到问题可以查一下对应版本的API文档
- 如果你的媒体有多个音频流,记得把第二个参数(索引)改成对应的序号,比如
1就是第二个音频流
内容来源于stack exchange
相关产品推荐
相关产品推荐

