我试图播放mp3文件,我想跳转到文件中的特定位置。在Windows上的Chrome 33中,文件跳转到正确的位置(与在本地播放mp3的VLC相比),但在Windows上的Firefox 28中,它播放得太远了,而在Internet Explorer 11中,它播放得太远了。
它曾经在Firefox 27及更早版本中正常运行。
有更好的方法吗?
编辑:问题甚至不需要SoundManager2。您只需使用Firefox中的<audio>
标记即可复制相同的问题。这两行是重现它所需的所有代码:
<audio autoplay id="audio" src="http://ivdemo.chaseits.co.uk/enron/20050204-4026(7550490)a.mp3" controls preload></audio>
<button onclick="javascript:document.getElementById('audio').currentTime = 10;">Jump to 10 secs "...be with us in, er, 1 minute... ok" </button>
在此处试试:http://jsfiddle.net/cpickard/29Gt3/
编辑:尝试使用Firefox Nightly,没有任何改进。我在bugzilla中将其报告为bug 994561。现在仍在寻找解决方法。答案 0 :(得分:6)
问题在于mp3的 VBR encoding。
将mp3下载到磁盘并将其转换为固定比特率,例如使用Audacity。
从磁盘运行示例:
<audio autoplay id="audio" src="./converted.mp3" controls preload></audio>
<button onclick="javascript:document.getElementById('audio').currentTime = 10;">
Jump to 10 secs "...be with us in, er, 1 minute... ok" </button>
它对我来说很好。
因此,我对解决方法的建议是上传一个替代固定位mp3文件来代替您正在使用的文件。然后它应该在当前的FFx中工作。
答案 1 :(得分:4)
我在SoundJS工作,虽然实现音频精灵最近遇到了类似的问题。根据规范,设置html音频播放头的位置可能不准确达300ms。这可以解释你所看到的一些问题。
有趣的是,如果我从一开始就让它发挥作用,那么你的小提琴在FF 28中就可以在胜利8.1中正确播放。
还有一些已知的音频长度准确性问题也可能会产生影响,您可以阅读here。
如果你想要精确,我肯定会建议尽可能使用网络音频或像SoundJS这样的库。
希望有所帮助。
答案 2 :(得分:3)
我遇到了同样的问题,我通过将我的MP3文件转换为CBR(恒定比特率)格式解决了这个问题。然后,它可以解决 currentTime 和真实声音之间的不一致问题。
步骤:
不存在不一致/异步问题。
另见:
tsungjung411@gmail.com
答案 3 :(得分:2)
我刚用另一个音频网址here尝试了你的代码,它似乎工作了,我之前没有在Firefox(v29)中遇到任何延迟。
<audio autoplay id="audio" src="http://mediaelementjs.com/media/AirReview-Landmarks-02-ChasingCorporate.mp3" controls preload></audio>
我想要跳转到一个音频文件,你的服务器必须正确配置。
客户端发送byte range requests来搜索和播放文件的某些区域,因此服务器必须做出充分的响应:
为了支持寻求和回放媒体的区域 还没有下载,Gecko使用HTTP 1.1字节范围请求 从搜索目标位置检索媒体。另外,如果你 不提供X-Content-Duration标头,Gecko使用字节范围请求 寻求媒体的终结(假设您提供内容长度 标题)以确定媒体的持续时间。
希望这会有所帮助.. 您还可以尝试查看Web Audio API类似声音效果的播放,这可以保证播放延迟。
答案 4 :(得分:0)
在对小提琴进行测试之后,很明显FF存在一些问题,任何人在搜索某个时间之后,问题都归因于&#34;性能滞后&#34;但好消息是有人找到了解决这个问题的方法,你可能想读一下:
单个脚本将解决所有问题。