MediaInfo 在 C# 中动态检查 AudioStreams

Posted

技术标签:

【中文标题】MediaInfo 在 C# 中动态检查 AudioStreams【英文标题】:MediaInfo check AudioStreams dynamically in C# 【发布时间】:2020-10-23 11:12:49 【问题描述】:

我正在使用带有 Wrapper-Class 的 MediaInfo.dll 来检查视频文件中的音频编解码器。

谁能告诉我如何检查文件的音频流数?

string pfad = Console.ReadLine();
        string[] verzeichnisse = Directory.GetDirectories(pfad);
        foreach (string verzeichnis in verzeichnisse)
        
            string[] dateien = Directory.GetFiles(verzeichnis);
            foreach (string datei in dateien)
            
                if(datei.ToLower().Contains(".mkv") || datei.ToLower().Contains(".avi") || datei.ToLower().Contains(".mp4"))
                
                    var mediaInfo = new MediaInfo();
                    mediaInfo.Open(datei);

                    // HERE I WANT CHECK FIRST HOW MANY AUDIO-STREAMS THERE ARE
                    // ???

                    var audiostream1 = mediaInfo.Get(StreamKind.Audio, 0, "Format");
                    var audioStream2 = mediaInfo.Get(StreamKind.Audio, 1, "Format");  
                    
                    mediaInfo.Close();

                
            
        

【问题讨论】:

【参考方案1】:

如何检查文件的音频流数?

mediaInfo.Count_Get(StreamKind.Audio);

您可以查看MediaInfo C# example 以获取更多示例。

另一个例子(你可以在链接的例子中找到它):

mediaInfo.Get(StreamKind.Audio, 0, "Language");

Jérôme,MediaInfo 的开发者。

【讨论】:

非常感谢! 可以获取 AudioStream 的语言吗? 检查我链接到的示例将提供答案,无论如何我用这样特定的附加示例编辑了我的答案。【参考方案2】:

您可以在这里找到所有 MediaInfo 属性https://staxrip2.readthedocs.io/en/latest/mediainfo.html

其中一些不起作用,我不知道这是否是 C# 包装器中的错误。

在您的情况下,您可以分别计算视频、音频和字幕流:

mediaInfo.Get(StreamKind.Video, 0, "StreamCount");
mediaInfo.Get(StreamKind.Audio, 0, "StreamCount");
mediaInfo.Get(StreamKind.Text, 0, "StreamCount");

【讨论】:

以上是关于MediaInfo 在 C# 中动态检查 AudioStreams的主要内容,如果未能解决你的问题,请参考以下文章

C#使用MediaInfo查看媒体信息

使用 C# 和 MediaInfo 如何检测 HDR 格式

将 MediaInfo DLL 与 C# DLLImport 一起使用

动态对象变量的 C# 索引在方法中有效,但在返回时无效,错误 C50021

python随笔4(if语句)

如何检查 C# 中的动态匿名类型上是不是存在属性?