audio - JPlayer Circle Player不会第一次显示由vox制成的wav文件的圆形

标签 audio html5-audio wav jplayer sox

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

我认为这是因为原始的vox格式或wav格式都不包含任何长度数据,因此播放器直到尝试播放它时才知道这一点。一旦得知长度,便可以显示圆圈。

如何克服?圈子播放器可以在播放之前以某种方式预加载音频以确定其长度吗?在SoX转换中我可以做些不同的事情吗?转换为WAV以外的内容会更好吗? JPlayer建议不要使用WAV,但不说为什么,并且它可以很好地发挥作用。

还是我做错了什么?

更新1:使用soxi读取原始.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.

表示直到第一次播放才知道持续时间。

UPDATE 3:撤消UPDATE 1:尽管soxi可以从文件中提取持续时间数据,但这并不一定意味着HTML5浏览器可以这样做。那里可能有不同的算法。转换又回来了。我看不出有什么其他的。

我认为这可能是因为Circle Player驻留在模式对话框中,但是在加载调用模式对话框的页面且仅在显示模式对话框时才加载媒体时实例化了。我将其更改为更简洁的设计,每次显示模态对话框时都会实例化Circle Player,并在那时加载媒体(并在模态消失时销毁媒体),但是问题仍然存在。

样本文件

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

最佳答案

CAUSE


播放器不播放.WAV文件的原因有多种。根据您的描述,播放器可以在第二次单击后播放.WAV文件,看来您可能在初始化播放器之前就太早加载了.WAV文件。

NOTES


根据documentation:

The WAV format is supported by many HTML5 browsers. We recommend that you avoid it though as a counterpart format. The recommended encoding options are:

  • 8-bit and 16-bit linear PCM
  • Only codec "1" (PCM) is supported.

如果可能的话,我建议改用.MP3格式,因为它在台式机/移动浏览器中具有更广泛的支持。
另外请注意,您需要指定supplied: 'wav'才能播放.WAV文件。

DEMO


请参阅this jsFiddle以获取jPlayer Circle Player播放上载的.WAV文件的演示。
我可以在Firefox,Chrome和Safari上播放.WAV文件,但不能在IE上播放。这表明问题不在于文件格式。

关于audio - JPlayer Circle Player不会第一次显示由vox制成的wav文件的圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702592/

相关文章:

ios - 如何提高 MPMediaItem 的频率范围? (类似于参数均衡器,例如,将 500 Hz 提升 12 dB)

html - HTML5播放器定制

javascript - 为什么在音频 src 上调用的 timeupdate 事件更改 HTML/JS

javascript - 如何使用JS合成正弦音频波?

audio - Monogame:WAV 不播放

php - 我无法停止当前通过ajax调用在提供的网页上播放音频

java - Jar无法播放通过getClass()加载的资源文件夹中的声音

HTML5 音频停止功能

c++ - 读取 .wav 文件并在 C++ 中应用 FFT

java - Wav文件的标题 block 大小错误