当前位置: 首页 > 知识库问答 >
问题:

HTML5音频标签在Chrome中显示错误的MP3持续时间

公西宏毅
2023-03-14

当我尝试通过HTML5播放器播放一些MP3时,播放器似乎返回两个不同的持续时间。当我用jQuery查询持续时间时,我会得到当前的持续时间,但在默认的Chrome播放器中,歌曲尝试播放的时间要比歌曲实际播放的时间长得多。这在Safari(MacOSX上的7.0.1)中不是问题。是什么原因导致某些MP3出现此问题?如何让Chrome(第31节)使用正确的时间?

代码如下:

<audio controls="" autoplay="" name="media"><source src="http://musicalfamilytree.com/_private/c/cowboys_the/clown-car_2.mp3" type="audio/mpeg"></audio>
<input type="button" onclick='alert($("audio")[0].duration);' value="check duration" />

以下是音频文件的JSFIDLE:<代码>http://jsfiddle.net/spKqh/5/

共有1个答案

庄子平
2023-03-14

这一切归结为特定的MP3文件。估计MP3文件的长度听起来很简单,但没有一种正确的方法。目前有不同的标签标准,有时此类标签存储的长度可能准确,也可能不准确。另一种方法是确定MP3文件是恒定还是可变比特率文件,然后计算一些数字来确定长度。

我的猜测是,Safari使用前一种方法(使用标签进行估计)来确定126秒的真实长度,而Chrome使用后一种方法(根据比特率和文件大小进行猜测)来确定227秒的长度。进一步解释:

我下载了有问题的MP3进行分析(小丑车2.MP3)。它的长度为9096504字节。根据回放实用程序,它以每秒320千比特的恒定比特率进行编码。假设千位是1000位:

320000 bits per second / 8 bits per byte = 40000 bytes per second
9096504 bytes / 40000 bytes per second = ~227 seconds

这是怎么回事?MP3文件以额外元数据的形式承载着大量的负担。FFmpeg将其标识为具有运动JPEG视频轨迹(可能是静态封面艺术图像)。这可能会导致长度计算中断。

我使用FFmpeg重新编码MP3,同时擦洗元数据:

ffmpeg -i clown-car_2.mp3 -vn -acodec copy clown-car_2.scrubbed.mp3

此命令忽略视频轨道(-vn)并无损地转码编码的音频(不会导致音频质量损失)。FFmpeg将此文件标识为126秒(而之前声称是227秒)。请注意,这个新文件是5043953字节:

5043953 bytes / 40000 bytes per second = ~126 seconds

因此,您可能希望通过丢失庞大的图像元数据来收紧这些MP3文件(也许可以考虑比特率低于320 kbits/s,这是MP3支持的最大比特率,而不是互联网流媒体的常见比特率)。

 类似资料:
  • 我有一个对象列表,它具有以下属性 公共类ViewTestCasesBean { } 现在我的行动代码是... 这里详细说明List是要在显示标签中显示的上述对象的List。 我尝试了以下方法 但是得到了以下错误... 编码有什么问题?

  • 问题内容: 我正在尝试将YouTube视频源放入HTML5标签,但似乎不起作用。经过一番谷歌搜索,我发现HTML5不支持YouTube视频URL作为来源。 您可以使用HTML5嵌入YouTube视频吗?如果没有,是否有任何解决方法? 问题答案: 第1步:添加到您喜欢的YouTube网址 步骤2:在来源中寻找标签 第3步:添加到视频标签: 例: 注意那里似乎有些东西。我不知道该字符串可以工作多长时间

  • 我正在做一个基于jquery动画的项目,它的动画在桌面(Firefox,chrome,opera,IE)上很好的工作,也支持HTML5音频标签,但在iPad/iPhone/Android safari音频标签不支持。它在iPad/iPhone/Android Firefox上工作很好。我在很多论坛上搜索过它,都没有得到想要的结果。我使用过这个函数:

  • 问题内容: 如何在不创建MediaPlayer实例的情况下获得mp3曲目的持续时间?我只需要在mp3文件列表中显示mp3歌曲的长度,所以我认为我不应该为列表中的每个音轨创建MediaPlayer对象 还有一个: 有时MediaPlayer会返回错误的歌曲持续时间(我认为是错误的,因为这些文件的比特率是动态的)。如何获得正确的歌曲时长? 问题答案: 您可以使用MediaMetadataRetriev

  • 本文向大家介绍除了音频和视频,HTML5还支持哪些媒体标签?相关面试题,主要包含被问及除了音频和视频,HTML5还支持哪些媒体标签?时的应答技巧和注意事项,需要的朋友参考一下 楼上很优秀啊 audio 定义音频,如音乐和音频流 video 定义视屏,如视频片段和视频流 还有 canvas 定义画布,然后通过css/js绘制图像,前端在做图像处理的时候用的比较多 marquee 滚动的文字,可以设置