JPlayer Circle Player第一次显示圈子时使用由vox

时间:2015-07-29 13:56:43

标签: audio html5-audio wav jplayer sox

我有一个应用程序正在使用JPlayer Circle Player播放用于转录目的的短音频。这些音频中的每一个都源自.sox文件,该文件已被SoX转换为.wav。按下“播放”按钮时,播放音频但不显示绿色圆圈。剪辑播放后,再次按下播放会显示绿色圆圈前进。

我认为这是因为原始vox格式或wav格式不包含任何长度数据,因此玩家在尝试播放之前不会知道这一点。一旦知道了长度,就可以显示圆圈。

如何克服这个问题?在播放之前,圈子播放器能以某种方式预加载音频以确定其长度吗?在SoX转换中我可以做些什么吗?转换到WAV以外的东西会更好吗? JPlayer建议反对使用WAV,但没有说明原因,除此之外,它的播放效果还不错。

或者还有别的我做错了吗?

UPDATE 1:在读取原始的.vox文件和转换后的.wav文件后,看起来两个地方都存在持续时间数据,因此玩家无法提前知道这一点。所以转换似乎是罪魁祸首。

更新2: 我为loadedmetadata和play事件添加了一些JPlayer事件处理程序,这些事件清楚地显示了上述问题。

$("#jquery_jplayer").bind($.jPlayer.event.loadedmetadata , function(event) { // Add a listener log the duration on load
    console.log("loadedmetadata: this audio has a duration of " + event.jPlayer.status.duration + " seconds.");
    });

$("#jquery_jplayer").bind($.jPlayer.event.play , function(event) { // Add a listener log the duration on play
    console.log("play: this audio has a duration of " + event.jPlayer.status.duration + " seconds.");
    });

这在日志中产生了以下输出:

loadedmetadata: this audio has a duration of 0 seconds.
play: this audio has a duration of 0 seconds.
play: this audio has a duration of 10.72 seconds.

表示在第一次游戏之前不知道持续时间。

更新3:撤消更新1:虽然soxi能以某种方式从文件中提取持续时间数据,但这并不一定意味着HTML5浏览器能够这样做。那里可能有不同的算法。转换重新开始。我看不出它是怎么回事。

我认为这可能是因为Circle Player存在于模态对话框中,但是在加载调用模态对话框的页面时会被实例化,并且只有在显示模态对话框时才会加载媒体。我把它改成了一个更清洁的设计,每次显示模态对话框并且当时加载媒体(并在模态消失时销毁),实例化Circle Player,但问题仍然存在。

样本文件

Download sample file进行测试。它是一个10秒的剪辑,在最初的几秒内有一些微弱的随机噪音,然后在大约7或8秒的标记处,一个女性的声音说出名字和姓氏。

1 个答案:

答案 0 :(得分:0)

  

<强>原因

为什么玩家不玩.WAV文件有多种原因。根据你的描述,玩家可以在第二次点击后播放.WAV文件,似乎你可能在玩家初始化之前过早加载你的.WAV文件。

  

备注

根据documentation

  

许多HTML5浏览器都支持WAV格式。我们建议您尽量避免使用它作为对应格式。推荐的编码选项是:

     
      
  • 8位和16位线性PCM
  •   
  • 仅支持编解码器“1”(PCM)。
  •   

如果可能的话,我建议使用.MP3格式,因为它有更广泛的桌面/移动浏览器支持。

另请注意,您需要指定supplied: 'wav'才能播放.WAV文件。

  

<强>样本

有关播放您上传的.WAV文件的jPlayer Circle Player的演示,请参阅this jsFiddle

我能够在Firefox,Chrome和Safari上播放.WAV文件,但不能播放IE。这表明问题不在于文件格式。