我想通過node.js + ffmpeg流式傳輸音頻到只連接到局域網中的瀏覽器使用網絡音頻api。使用FFMPEG實時流式傳輸到網絡音頻api
不使用元素,因爲它添加了它自己的緩衝區8到10秒,我想要獲得最大的高延遲(最大約1到2秒)。
音頻播放成功,但音頻非常波濤洶涌。
這裏是我的node.js(服務器端)文件:
var ws = require('websocket.io'),
server = ws.listen(3000);
var child_process = require("child_process");
var i = 0;
server.on('connection', function (socket)
{
console.log('New client connected');
var ffmpeg = child_process.spawn("ffmpeg",[
"-re","-i",
"A.mp3","-f",
"f32le",
"pipe:1" // Output to STDOUT
]);
ffmpeg.stdout.on('data', function(data)
{
var buff = new Buffer(data);
socket.send(buff.toString('base64'));
});
});
這裏是我的HTML:
var audioBuffer = null;
var context = null;
window.addEventListener('load', init, false);
function init() {
try {
context = new webkitAudioContext();
} catch(e) {
alert('Web Audio API is not supported in this browser');
}
}
var ws = new WebSocket("ws://localhost:3000/");
ws.onmessage = function(message)
{
var d1 = base64DecToArr(message.data).buffer;
var d2 = new DataView(d1);
var data = new Float32Array(d2.byteLength/Float32Array.BYTES_PER_ELEMENT);
for (var jj = 0; jj < data.length; ++jj)
{
data[jj] = d2.getFloat32(jj * Float32Array.BYTES_PER_ELEMENT, true);
}
var audioBuffer = context.createBuffer(2, data.length, 44100);
audioBuffer.getChannelData(0).set(data);
var source = context.createBufferSource(); // creates a sound source
source.buffer = audioBuffer;
source.connect(context.destination); // connect the source to the context's destination (the speakers)
source.start(0);
};
任何一個可以建議有什麼不好?
問候, 拿煙
你好拿煙,我使用的Web音頻API,並且要錄製的聲音通過網絡thje音頻API發揮,,我的問題http://stackoverflow.com/questions/21234902/record-sound-of-a-webaudio-apis-audio-context在這裏,你能幫我嗎 –