Javascript 创建youtube流HTML5的音频频谱
在HTML5中创建MediaElementSource(绘制youtube视频的可视化)。可能吗 你能给我举个例子吗?我只想添加一个传统的youtube播放器,在它的频谱/可视化下,我在互联网上找到了一个mp3版本 这是它的音频/mp3版本,我只是不知道这是否可以与youtube视频流一起使用Javascript 创建youtube流HTML5的音频频谱,javascript,html,audio,youtube,spectrum,Javascript,Html,Audio,Youtube,Spectrum,在HTML5中创建MediaElementSource(绘制youtube视频的可视化)。可能吗 你能给我举个例子吗?我只想添加一个传统的youtube播放器,在它的频谱/可视化下,我在互联网上找到了一个mp3版本 这是它的音频/mp3版本,我只是不知道这是否可以与youtube视频流一起使用 <style type="text/css"> div#mp3_player{ width:500px; height:60px; background:#000; padding:5px;
<style type="text/css">
div#mp3_player{ width:500px; height:60px; background:#000; padding:5px; margin:50px auto; }
div#mp3_player > div > audio{ width:500px; background:#000; float:left; }
div#mp3_player > canvas{ width:500px; height:30px; background:#002D3C; float:left; }
</style>
<script>
// Create a new instance of an audio object and adjust some of its properties
var audio = new Audio();
audio.src = '613814.mp3';
audio.controls = true;
audio.loop = true;
audio.autoplay = false;
// Establish all variables that your Analyser will use
var canvas, ctx, source, context, analyser, fbc_array, bars, bar_x, bar_width, bar_height;
// Initialize the MP3 player after the page loads all of its HTML into the window
window.addEventListener("load", initMp3Player, false);
function initMp3Player(){
document.getElementById('audio_box').appendChild(audio);
context = new webkitAudioContext(); // AudioContext object instance
analyser = context.createAnalyser(); // AnalyserNode method
canvas = document.getElementById('analyser_render');
ctx = canvas.getContext('2d');
// Re-route audio playback into the processing graph of the AudioContext
source = context.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(context.destination);
frameLooper();
}
// frameLooper() animates any style of graphics you wish to the audio frequency
// Looping at the default frame rate that the browser provides(approx. 60 FPS)
function frameLooper(){
window.webkitRequestAnimationFrame(frameLooper);
fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
ctx.fillStyle = '#00CCFF'; // Color of the bars
bars = 100;
for (var i = 0; i < bars; i++) {
bar_x = i * 3;
bar_width = 2;
bar_height = -(fbc_array[i] / 2);
//fillRect( x, y, width, height ) // Explanation of the parameters below
ctx.fillRect(bar_x, canvas.height, bar_width, bar_height);
}
}
</script>
</head>
<body>
<div id="mp3_player">
<div id="audio_box"></div>
<canvas id="analyser_render"></canvas>
</div>
div#mp3_播放器{宽度:500px;高度:60px;背景:000;填充:5px;边距:50px自动;}
div#mp3_player>div>audio{宽度:500px;背景:#000;float:left;}
div#mp3_播放器>画布{宽度:500px;高度:30px;背景:#002D3C;浮动:左;}
//创建音频对象的新实例并调整其某些属性
var audio=新音频();
audio.src='613814.mp3';
audio.controls=true;
audio.loop=true;
audio.autoplay=false;
//确定分析仪将使用的所有变量
var画布、ctx、源、上下文、分析器、fbc_数组、条形、条形、条形、条形宽度、条形高度;
//在页面将其所有HTML加载到窗口后初始化MP3播放器
addEventListener(“加载”,initmp3plyer,false);
函数initMp3Player(){
document.getElementById('audio_-box').appendChild(audio);
context=新的webkitAudioContext();//AudioContext对象实例
Analyzer=context.createAnalyzer();//AnalyzerNode方法
canvas=document.getElementById('analyzer_render');
ctx=canvas.getContext('2d');
//将音频播放重新路由到AudioContext的处理图中
source=context.createMediaElementSource(音频);
源。连接(分析仪);
分析器.连接(上下文.目的地);
frameLooper();
}
//frameLooper()为您希望播放音频的任何图形样式设置动画
//以浏览器提供的默认帧速率循环(约60 FPS)
函数frameLooper(){
webkitRequestAnimationFrame(frameLooper);
fbc_阵列=新UINT8阵列(分析仪频率b计数);
分析仪。GetByTefFrequencyData(fbc_阵列);
ctx.clearRect(0,0,canvas.width,canvas.height);//清除画布
ctx.fillStyle='#00CCFF';//条的颜色
钢筋=100;
对于(变量i=0;i
我认为这是不可能的,因为您无法从页面访问Youtube Iframe/页面的HTML5视频元素。
不幸的是,Youtube不允许CORS,这就阻止了这一点:也许下载音频并使用它是解决方案?它将解决乔里克托斯指出的问题。但需要后端。请稍微扩展您的答案。提到