我有一个MediaElement,它根据有效的String将Source设置为新的Uri .
例如:
MediaElementName.Source = new Uri(“string”);
该字符串是一个有效的路径,在调试之后,它有时会设置“MediaElementName”的NaturalDuration,有时它不会...
我现在谷歌搜索至少2个小时没有工作结果..
有没有人在这里知道为什么有时它会设置NaturalDuration,有时它不会?我能够播放wav,但它不知道wav文件有多长(持续时间) .
感谢任何帮助或想法,谢谢!
-BTG
2 回答
我知道这太晚了但是无论如何我的经验是这个问题的两个变种
a)编解码器(flac可以是此示例)无法找出持续时间 . 检查并查看Windows Media Player是否显示进度条(我自定义硬件生成的一些flac文件有此问题)我怀疑文件中没有“索引” . 另外,flac格式给出了不同的结果,这取决于它是在本地文件上运行还是在http上运行(我怀疑这是因为当它无法在流中搜索时它无法找到长度) .
b)有些编解码器在提供一些材料之前不给出持续时间,为了解决这个问题,我有一个运行的计时器,它使用Player.NaturalDuration.HasTimeSpan,然后获取TimeSpan . 这通常会在媒体开始播放的几秒钟内得到一段时间 . 检查Player_MediaOpened中的时间 Span 并不可靠 .
我实际上只是后退了一步,而是使用FileInfo检索信息 .