我正在做一个html5音频播放器,所以我正在尝试使用自定义播放器。我不想使用默认的<audio>
标签接口。我想为播放器做我自己的html/css样式。
我的实际代码(它有效)
if('webkitAudioContext' in window) {
var myAudioContext = new webkitAudioContext();
}
request = new XMLHttpRequest();
request.open('GET', 'http://96.47.236.72:8364/;', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', bufferSound, false);
request.send();
function bufferSound(event) {
var request = event.target;
var source = myAudioContext.createBufferSource();
source.buffer = myAudioContext.createBuffer(request.response, false);
source.connect(myAudioContext.destination);
source.noteOn(0);
}
http://jsfiddle.net/EY54q/1/
有人知道如何编辑这个播放器样式,或者做一些事情来使用我自己的html/css代码来执行这个播放器吗?
您可以完全制作自己的风格。 只需忘记控件选项(您可以简单地使用controls
而不需要使用controls="controls"
)。只需创建按钮/div/任何东西,设置它们的样式,并添加一个控制音频接口的事件监听器:
.html:
<button id="playpause">play
<!--you can style the content with anything!-->
</button>
<audio id="player">
<source src="http://96.47.236.72:8364/;" />
</audio>
.JS:
window.player = document.getElementById('player');
document.getElementById('playpause').onclick = function () {
if (player.paused) {
player.play();
this.innerHTML = 'pause';
} else {
player.pause();
this.innerHTML = 'play';
}
}
http://jsfiddle.net/LqM9D/1/
我看到您也在使用音频 API。请注意,您不能只在缓冲区中转储音频文件。它需要解码为原始 PCM。这需要很多时间。一个非常简单的方法是创建一个链接到音频元素的源节点:
var source = context.createMediaElementSoure(player); //we defined player in the first block of code
要使您的页面更具跨浏览器功能,请执行以下操作:
window.AudioContext = window.AudioContext||window.webkitAudioContext;
context = new AudioContext();
编辑:
我想你想知道你还能用这个元素做什么。您还可以为时间线制作一个滑块,以及一个音量滑块/静音按钮,尽管我希望后两者在一行过滤器等末尾的增益节点上执行此操作。
是的。可以通过"影子dom"来实现。您只需要在浏览器中启用它并为元素编写样式,即可到达。
正如我所理解的那样 - 这是浏览器特定的功能。但是对于基于webkit的"影子dom"样式来说,工作完美。没有那么多信息,但是此功能已经完全使用。例如,请参阅以下问题:为什么没有用户代理为视频元素实现 CSS 光标样式如果在检查器设置中启用显示阴影 dom,您将看到它的工作原理。(还有带有选择器列表的公共列表 - https://gist.github.com/afabbro/3759334)
对于其他浏览器,您需要检查对使用"shadow dom"的支持。