0

我有一个 MediaElement,我将它的 Source 设置为基于有效字符串的新 Uri。

例如:

MediaElementName.Source = new Uri("string");

该字符串是有效路径,调试后有时会设置“MediaElementName”的 NaturalDuration,有时不会。

我已经在谷歌上搜索了至少 2 个小时,但没有任何工作结果..

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

任何帮助或想法表示赞赏,谢谢!

-BTG

4

2 回答 2

1

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

a) 编解码器(flac 可以是这方面的一个例子)无法找出持续时间。检查并查看 windows 媒体播放器是否显示进度条(我拥有的一些由自定义硬件生成的 flac 文件有这个问题)我怀疑文件中没有“索引”。此外,flac 格式会给出不同的结果,具体取决于它是在本地文件上运行还是通过 http 运行(我怀疑这是因为当它无法在流中查找时,它无法找到长度)。

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

于 2011-04-26T16:30:35.663 回答
0

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

FileInfo test = new FileInfo("myFilepath");
double size = test.Length;
于 2010-06-15T20:36:20.313 回答