启动HTML5<音频>在随机位置
Start HTML5 <Audio> at random position
我有一个大约2小时长的音轨,我想在我的网站上使用。我希望它在页面加载时在随机位置开始播放曲目。这可能使用HTML5吗?我知道你可以使用element.currentTime()函数来获得当前位置,但在完全下载之前,你如何获得曲目的总时间?我已经试过了每种加载、预加载、自动缓冲区的组合,还有数百种。
<script>
var stream_url_mp3 = "";
var stream_url_ogg = "";
var stream_total_time = 100;
var stream_start_time = Math.floor(Math.random() * stream_total_time);
var daJukebox = document.createElement('audio');
if (daJukebox.canPlayType) {
if ("" != daJukebox.canPlayType('audio/mpeg')) {
daJukebox.src = stream_url_mp3;
} else if ("" != myAudio.canPlayType('audio/ogg; codecs="vorbis"')) {
daJukebox.src = stream_url_ogg;
}
daJukebox.preload = true;
daJukebox.autobuffer = true;
daJukebox.pause();
daJukebox.currentTime = stream_start_time;
daJukebox.play();
}
感谢:)
如果无法从HTML5音频元素获取信息,可以在服务器上确定持续时间,并将信息作为数据属性传递给HTML。例如:
<audio id="some-id" data-duration="7200">
其中CCD_ 2是以秒为单位的时间(或某个其他时间单位)。然后,您可以在JavaScript中使用该属性的值来决定在哪里启动音频文件。
daJukebox.duration
返回什么?它应该是以秒为单位的轨道的总长度。
我做了一点研究,看起来只有当服务器配置为正确地将文件头设置为type="audio/mp3"name="filename.mp3"(或ogg)时,.duration
才会工作,检查开发控制台的网络选项卡,我敢打赌你的服务器发送的文件类型为octet/stream
,这会导致Opera中的"infinite"
持续时间和其他浏览器中的NaN
持续时间。
我自己还没有设置,但我在http://dev.opera.com/articles/view/html5-audio-radio-player/
// Invoke new Audio object
var audio = new Audio('test.ogg');
// Get the play button and append an audio play method to onclick
var play = document.getElementById('play');
play.addEventListener('click', function(){
audio.play();
}, false);
// Get the pause button and append an audio pause method to onclick
var pause = document.getElementById('pause');
pause.addEventListener('click', function(){
audio.pause();
}, false);
// Get the HTML5 range input element and append audio volume adjustment to onchange
var volume = document.getElementById('volume');
volume.addEventListener('change', function(){
audio.volume = parseFloat(this.value / 10);
}, false);
// Get where one are in playback and push the time to an element
audio.addEventListener("timeupdate", function() {
var duration = document.getElementById('duration');
var s = parseInt(audio.currentTime % 60);
var m = parseInt((audio.currentTime / 60) % 60);
duration.innerHTML = m + '.' + s + 'sec';
}, false);
不知道这是如何交叉兼容的,但这表明你可能可以做一些类似的事情
var audio = new Audio('test.ogg');
audio.currentTime = "some time format I'm not sure how to format yet";
相关文章:
- 如何克隆图像并将其放置在随机位置
- 开玩笑:测试数组的随机位置
- 谷歌地图API使用Math.random获取随机位置 - JS
- 返回包含随机位置元素的数组
- 在随机位置与空格匹配字符串
- 如何使气泡图随机位置
- 启动HTML5<音频>在随机位置
- 使用jQuery将文本按字面顺序分解到随机位置
- 在HTML5蛇游戏中为食物生成随机位置时发生未捕获的TypeError
- 将图像定位在随机位置
- 如何对齐一个旋转的轮子停止在中心位置,而不是使用javascript随机位置
- 在Safari iOS10中,在iframe中调用element.focus()将父页面滚动到随机位置
- 使用javaScript在随机位置显示图像时遇到麻烦
- 如何让我的缩略图显示在随机位置(在存档页面wordpress)
- 附加内容的随机位置与jQuery
- 具有随机位置的数组
- 我如何在js中分散随机位置的图像
- 将字符串插入到另一个字符串中的随机位置
- 图像的随机位置
- 工具提示显示在随机位置