从插座上看。io网站
从1.0开始,可以来回发送任何Blob:图像、音频、视频。
我现在想知道,这是否能解决我最近想要实现的目标。
我其实是在寻找一种方法,如何直播音频流从(A-即,麦克风输入...)到所有客户连接到我的网站。像这样的事情可能吗?我一直在摆弄WebRTC(https://www.webrtc-experiment.com/)示例,但我无法为几个连接的客户端管理目标。
我的想法是关于像getUserMedia或任何其他音频源(PCM,无论什么...)在A侧被切成块并提供给客户端,例如通过html5音频元素或任何东西播放...我需要使流尽可能实时,没有喊/冰铸服务不够快(事实上,他们不是我的问题的解决方案,他们应该这样使用),我真的不关心音频质量。跨平台兼容性会很棒。
这样可能吗?通过使用套接字。io作为向客户提供这些数据的方式?
我将非常感激任何可以帮助我实现这一目标的参考、提示或来源。多谢了。
在客户端代码中,您可以编写setInterval()而不是setTimeout(),然后递归调用mediaecorder.start(),以便每隔5秒连续发出Blob。
setInterval(function() {
mediaRecorder.stop()
mediaRecorder.start()
}, 5000);
客户端代码
var constraints = { audio: true };
navigator.mediaDevices.getUserMedia(constraints).then(function(mediaStream) {
var mediaRecorder = new MediaRecorder(mediaStream);
mediaRecorder.onstart = function(e) {
this.chunks = [];
};
mediaRecorder.ondataavailable = function(e) {
this.chunks.push(e.data);
};
mediaRecorder.onstop = function(e) {
var blob = new Blob(this.chunks, { 'type' : 'audio/ogg; codecs=opus' });
socket.emit('radio', blob);
};
// Start recording
mediaRecorder.start();
// Stop recording after 5 seconds and broadcast it to server
setInterval(function() {
mediaRecorder.stop()
mediaRecorder.start()
}, 5000);
});
// When the client receives a voice message it will play the sound
socket.on('voice', function(arrayBuffer) {
var blob = new Blob([arrayBuffer], { 'type' : 'audio/ogg; codecs=opus' });
var audio = document.createElement('audio');
audio.src = window.URL.createObjectURL(blob);
audio.play();
});
服务器代码
socket.on('voice', function(blob) {
// can choose to broadcast it to whoever you want
socket.broadcast.emit('voice', blob);
});
本示例向您展示了如何使用MediaRecorder
上传音频,然后使用socket.io
转发音频。此代码只会在调用mediaecorder.stop()
后广播。您可以选择在ondata
内部广播。如果您这样做,您可能希望将一个timeslice
传递给mediaecorder.start()
,这样它就不会经常触发ondata可用性
。
这个解决方案并不是真正的生活,但我认为它会帮助那些回来发现这个问题的人。
客户端代码
var constraints = { audio: true };
navigator.mediaDevices.getUserMedia(constraints).then(function(mediaStream) {
var mediaRecorder = new MediaRecorder(mediaStream);
mediaRecorder.onstart = function(e) {
this.chunks = [];
};
mediaRecorder.ondataavailable = function(e) {
this.chunks.push(e.data);
};
mediaRecorder.onstop = function(e) {
var blob = new Blob(this.chunks, { 'type' : 'audio/ogg; codecs=opus' });
socket.emit('radio', blob);
};
// Start recording
mediaRecorder.start();
// Stop recording after 5 seconds and broadcast it to server
setTimeout(function() {
mediaRecorder.stop()
}, 5000);
});
// When the client receives a voice message it will play the sound
socket.on('voice', function(arrayBuffer) {
var blob = new Blob([arrayBuffer], { 'type' : 'audio/ogg; codecs=opus' });
var audio = document.createElement('audio');
audio.src = window.URL.createObjectURL(blob);
audio.play();
});
服务器代码
socket.on('radio', function(blob) {
// can choose to broadcast it to whoever you want
socket.broadcast.emit('voice', blob);
});
我正在尝试使用webrtc和socket通过getUserMedia()获取音频。io将其发送到服务器(socket.io支持音频、视频、二进制数据),然后服务器将其广播到所有连接的客户端。问题是,当流到达连接的客户端时,它会转换为JSON对象,而不是媒体流对象。所以我无法发送音频,我也尝试了套接字。io流模块,但我认为未成功。您能帮我正确捕获音频流并将其发送到所有连接的客户端吗。 下面是发送数据
我正试图创建一个呼叫录音机应用程序,然而,我的音频来源时,它的麦克风工作正常,但它不能捕捉第二个声音。 如果我更改为VOICE_CALL,我的应用程序关闭。 我在PlayStore上看到了数百个类似的应用程序,并想知道它们能够记录通话双方的秘密是什么。
请问,有任何简单的方法流(广播)媒体文件(ogg,mp3,SPX..)通过Node.js和Socket.io从服务器到客户机(浏览器)?
是迄今为止用Java捕获麦克风输入的最简单方法。我想对我用屏幕视频(在屏幕录制软件中)捕获的音频进行编码,以便用户可以创建教程、幻灯片盒等。 我使用对视频进行编码<他们确实有一个用视频编码音频的教程,但他们从文件中获取音频。就我而言,音频是实时的 参考文献: 1. DavaDoc for TargetDataLine:http://docs.oracle.com/javase/1.4.2/docs
另外,在绘制图形时,我如何使图形出现在GUI上?
我想创建一个能够接收音频流的Android应用程序。我曾想过使用A2DP配置文件,但似乎Android不支持A2DP接收器。看起来有很多人在寻找这个问题的解决方案。但是,如果接收一个普通的位流,然后在应用程序中将数据转换成音频呢?我想通过RFCOMM(SPP蓝牙模式)接收PCM或Mp3数据流,然后使用AudioTrack播放。 首先,我如何通过RFCOMM在我的Android手机上接收比特流?是否