我正在使用客户端brwoser实现一些视频/音频,并以特定间隔将其中的块上传到服务器。
现在在服务器端,我需要对音频做一些事情,然后将更新后的音频广播到其他客户端。
我正在使用RecordRTC来捕获音频和视频。对于视频我有方法 ondataavailable ,这给了我基于时间的blob。音频也可以有相似之处吗?任何更好的建议来实施这一流程也受到欢迎。
答案 0 :(得分:0)
使用getUserMedia捕获仅音频流,或生成新媒体流对象,您只需要添加音轨。
var recorder;
var listOfBlobs = [];
navigator.mediaDevices.getUserMedia({
audio: true,
video: true // video tracks are enabled only for demo purpose
}).then(function(camera) {
hiddenVideo.srcObject = camera; // make sure that camera tracks are not released/stoppped/inactive
var audioOnlyStream = new MediaStream();
camera.getAudioTracks().forEach(function(audioTrack) {
audioOnlyStream.addTrack(audioTrack);
});
recorder = RecordRTC(audioOnlyStream, {
type: 'audio',
mimeType: 'audio/webm',
recorderType: MediaStreamRecorder,
timeSlice: 1000,
ondataavailable: function(blob) {
listOfBlobs.push(blob);
}
});
});
btnStopRecording.onclick = function() {
recorder.stopRecording(function() {
var singleBlob = new Blob(listOfBlobs, {
type: 'audio/webm'
});
var url = URL.createObjectURL(singleBlob);
window.open(url);
});
};