silverlight – MediaElement.NaturalDuration小于音频的实际持续时间

silverlight – MediaElement.NaturalDuration小于音频的实际持续时间,第1张

概述在某些音频文件上,MediaElement.NaturalDuration的值小于音频的实际持续时间.当我在 Windows Media Player中打开文件时,持续时间是正确的(当我查看文件的属性时).虽然NaturalDuration属性的值不正确,但音频完全播放,但在某些时候,Position属性的值变得大于NaturalDuration属性的值,据我所知,这应该永远不会发生. 我创建了一 在某些音频文件上,MediaElement.NaturalDuration的值小于音频的实际持续时间.当我在 Windows Media Player中打开文件时,持续时间是正确的(当我查看文件的属性时).虽然NaturalDuration属性的值不正确,但音频完全播放,但在某些时候,position属性的值变得大于NaturalDuration属性的值,据我所知,这应该永远不会发生.

我创建了一个简单的应用程序来重现问题:https://skydrive.live.com/redir?resid=ACF8BFD4384116CE!2908&authkey=!AG-wF6Ae-7EAYk8

应用程序中使用的音频文件的持续时间为00:02:54,但NaturalDuration属性的值为00:01:59.

有谁知道为什么以及是否有解决方法?

在此先感谢您的帮助.

解决方法 好吧,这不是一个答案,而是一些简短调查的结果,提供了一些线索,为什么它表现得像那些数字来自(2:58和1:59).首先看一下这个帖子: Calculating the length of MP3 Frames in milliseconds
我们将从那里使用两件事:

1)帧长度(以ms为单位)=(每帧采样/采样率(以hz为单位))* 1000,和

持续时间(秒)=帧长(以毫秒为单位)*帧数/ 1000

2)对于不同的MPEG版本,有一些关于样本数量的标准:
每帧样本:

MPEG版本1

384,// Layer1        1152,// Layer2        1152    // Layer3

MPEG版本2& 2.5

384,// Layer2        576     // Layer3

现在让我们查看winamp关于文件格式信息的内容:

MPEG-2.5第3层

16 kbps,2482帧

现在,如果你取帧= 2482并且每帧样本= 576(MPEG-2.5第3层),你将得到持续时间2:58.但看起来由于某种原因,Silverlight和iTunes使用每帧样本= 384,这给我们1:59.下一步可能是检查文件头的实际值,如果它们是正确的,并且可以计算正确的持续时间 – 比你可以做一些黑客分别获取持续时间(例如从服务器).但我很确定 – 该文件有一些缺陷(标题和内容不一致),有些玩家可以处理它,有些则不能.

总结

以上是内存溢出为你收集整理的silverlight – MediaElement.NaturalDuration小于音频的实际持续时间全部内容,希望文章能够帮你解决silverlight – MediaElement.NaturalDuration小于音频的实际持续时间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1007430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存