首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >taglib-sharp:检索ChannelMode文件的MP3

taglib-sharp:检索ChannelMode文件的MP3
EN

Stack Overflow用户
提问于 2017-10-26 01:31:44
回答 1查看 631关注 0票数 0

我正在使用我的C# Win窗体应用程序中的taglib-sharp库来检索MP3文件的持续时间和比特率。下面是代码片段:

代码语言:javascript
复制
TagLib.File tagFile = TagLib.File.Create(myMp3FileName);

int bitrate = tagFile.Properties.AudioBitrate;
string duration = tagFile.Properties.Duration.Hours.ToString("D2") + ":" +
                  tagFile.Properties.Duration.Minutes.ToString("D2") + ":" +
                  tagFile.Properties.Duration.Seconds.ToString("D2");

我现在还想确定文件是Mono还是Stereo。要做到这一点,我想我需要阅读ChannelMode (0 =立体,1= JointStereo,2= DualChannel,3= SingleChannel)。唯一的问题是我不知道如何访问它。调试代码时,我可以看到手表窗口中的ChannelMode

然而,事实证明,要获得它是很困难的。我只走了这么远:

代码语言:javascript
复制
var codec = (((TagLib.ICodec[])tagFile.Properties.Codecs).GetValue(0));

当我运行这个程序时,我可以看到在调试器的监视窗口中,在它下面是ChannelMode。

我倾向于认为,此时我应该能够阅读codec.ChannelMode,但这显然不是正确的语法。我得到了这个编译器错误:

Error CS1061 'object‘不包含'ChannelMode’的定义,也找不到接受'object‘类型的第一个参数的扩展方法'ChannelMode’(您缺少使用指令还是程序集引用?)

我做错了什么?

提前谢谢你,

麦克。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 03:34:33

GetValue(0)返回一种object类型。您需要将返回值转换为适当的类型。在本例中,可能是一个AudioHeader (实现ICodec),它具有ChannelMode属性。就像这样

代码语言:javascript
复制
var codec = (AudioHeader)(((TagLib.ICodec[])tagFile.Properties.Codecs).GetValue(0));

或者更安全

代码语言:javascript
复制
var codec = (((TagLib.ICodec[])tagFile.Properties.Codecs).GetValue(0)) as AudioHeader?;
if (codec != null)
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46944478

复制
相关文章

相似问题

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