WPF MediaElement自然持续时间

时间:2010-06-15 18:13:14

标签: wpf uri mediaelement

我有一个MediaElement,我根据有效的String将Source设置为新的Uri。

例如:

MediaElementName.Source = new Uri(“string”);

该字符串是一个有效的路径,在调试之后,有时会设置“MediaElementName”的NaturalDuration,有时它不会..

我现在谷歌搜索至少2个小时没有工作结果..

这里有没有人知道为什么有时它会设置NaturalDuration,有时它不会?我能够播放wav,但它不知道wav文件有多长(持续时间)。

感谢任何帮助或想法,谢谢!!

-BTG

2 个答案:

答案 0 :(得分:1)

我知道这太晚了但是无论如何我的经验是这个问题的两个变种

a)编解码器(flac可以是此示例)无法找出持续时间。检查并查看Windows Media Player是否显示进度条(我自定义硬件生成的一些flac文件有此问题)我怀疑文件中没有“索引”。另外,flac格式给出了不同的结果,这取决于它是在本地文件上运行还是在http上运行(我怀疑这是因为当它无法在流中搜索时它无法找到长度)。

b)有些编解码器在提供一些材料之前没有给出持续时间,为了解决这个问题,我有一个运行的计时器,它使用Player.NaturalDuration.HasTimeSpan,然后获取TimeSpan。这通常会在媒体开始播放的几秒钟内得到一段时间。检查Player_MediaOpened中的时间跨度并不可靠。

答案 1 :(得分:0)

我实际上只是退后一步,而是使用FileInfo检索信息。

FileInfo test = new FileInfo("myFilepath");
double size = test.Length;