Articles of audiostream媒体

使用Google云端存储在Express中的字节范围

我正在使用谷歌云存储托pipe我的媒体。 我一直试图通过我的Express应用程序让Chrome浏览器正确缓冲audio。 然而,我似乎无法弄清楚如何正确设置谷歌云存储stream的字节范围,导致Chrome拒绝。 我使用快速范围来获取所需的范围,并使用Google的官方库与GCS进行交互。 const file = bucket.file(source.path); const stream = file.createReadStream({ 'start': req.range.first, 'end': req.range.last, }); stream.pipe(res); 这导致Chrome拒绝stream式传输audio(在标签中查看播放器时灰屏),我不明白为什么。 我也得到这个警告: 你可以在这里testingaudio(这是一个ngrok隧道) 编辑:我结束了使用send-seekable这为我的用例工作。 不过,我不确定它是否会对性能有好处,因为它不会在GCS请求上设置字节范围,这意味着很可能整个资源都被提取(除非我误解了stream的工作原理)

如何在Node中代理媒体stream?

我想能够代理远程icecaststream到客户端。 在过去的几天里,我一直在摆弄很多东西,但没有成功。 用例 : 能够从<audio>标签src提取分析器数据,而不会遇到CORS问题。 我的解决scheme迄今 为了解决CORS问题,阻止我直接从<audio>源文件中创build杠杆声音数据,我试着编写一个小代理,它将请求传递给特定的stream,并在任何其他情况下返回静态。 这是我的代码: require('dotenv').config(); const http = require('http'); const express = require('express'); const app = express(); const PORT = process.env.PORT || 4000; let target = 'http://direct.fipradio.fr/live/fip-midfi.mp3'; // figure out 'real' target if the server returns a 302 (redirect) http.get(target, resp => { if(resp.statusCode == 302) { target = resp.headers.location; } […]

使用ffmpeg,javascript和nodejs实况audio

我对这件事很陌生。 请不要挂我的语法差。 我正试图创build一个概念certificate应用程序,我将在以后扩展。 它执行以下操作:我们有一个html页面,要求获得使用麦克风的权限。 我们捕获麦克风input,并通过websocket发送到节点js应用程序。 JS(客户端): var bufferSize = 4096; var socket = new WebSocket(URL); var myPCMProcessingNode = context.createScriptProcessor(bufferSize, 1, 1); myPCMProcessingNode.onaudioprocess = function(e) { var input = e.inputBuffer.getChannelData(0); socket.send(convertFloat32ToInt16(input)); } function convertFloat32ToInt16(buffer) { l = buffer.length; buf = new Int16Array(l); while (l–) { buf[l] = Math.min(1, buffer[l])*0x7FFF; } return buf.buffer; } navigator.mediaDevices.getUserMedia({audio:true, video:false}) .then(function(stream){ […]

将audio从浏览器stream到nodejs

我知道这是一个很长的镜头,但是我想知道这是否可能,并且(如果可能的话)有人指出我正确的方向。 我有一台linux机器(运行nodejs服务器),使用VLC将播放列表(本地文件)stream式传输到networking。 在那个networking中,还有10台其他的linux机器正在播放服务器发送的数据stream(也使用VLC)。 我想知道是否有可能开发一个networking应用程序,可以传输audio从计算机浏览器到服务器,以便它可以stream式传输到其他机器; 我发现这 一点,但我不明白这一点。 即使我可以将现场audio传输到服务器,我也不知道是否可以“重新传输”到其他机器;

NodeJs:如何pipe两个stream到一个产生的进程stdin(即ffmpeg)导致一个单一的输出

为了两个PCMaudio转换成MP3我使用以下内容: function spawnFfmpeg() { var args = [ '-f', 's16le', '-ar', '48000', '-ac', '1', '-i', 'pipe:0', '-acodec', 'libmp3lame', '-f', 'mp3', 'pipe:1' ]; var ffmpeg = spawn('ffmpeg', args); console.log('Spawning ffmpeg ' + args.join(' ')); ffmpeg.on('exit', function (code) { console.log('FFMPEG child process exited with code ' + code); }); ffmpeg.stderr.on('data', function (data) { console.log('Incoming data: ' + […]

一个2多个audiostream,通过NodeJS或其他

一段时间以来,我一直在试图做一些我从来没有想过的事情:audiostream。 我的目标很简单, 一个简单的networking应用程序,通过它某个人可以点击一个button,并实时stream自己的声音给其他人使用这个程序。 这是一个在线课堂。 以下是详细信息: 广播/讲座安排在某个date和时间(完成) 用户作为教师/讲师login到简单的界面,在那里他可以点击“开始播放”(完成) 当教练点击“广播”时,他的声音被传送给其他用户。 其他学生types的用户也可以login并开始收听这位老师开始的“广播”。 (这是诀窍!) 广播本身应该自动存储到本地文件的过程中。 这样学生可以随时回复。 当然,我花了这么多小时的search和堆栈来解决这个问题,到目前为止我能理解的是: 如果起点是浏览器,我必须使用GetUserMedia API ,结果是我可以下载的原始PCM数据,发送到服务器或stream到其他人。 (简单) 向听众(学生)提供广播将通过HTML5的audioAPI完成。 (简单) WebRTC不能帮助我,因为这是一个P2P的事情,在这个过程中不可能有一个服务器在中间,我需要在本地保留一份副本。 ( 这是一个工作的例子 ) 我可以使用像Binary.js这样的工具将audio二进制数据传输给学生,但是这需要一个文件已经在桌面上。 在这个过程中,我需要将PCM数据转换为MP3或OGG格式,而不使用WAV,因为它的带宽成本非常昂贵。 我觉得应该是直截了当的,但我不能把它工作,我不能把所有这一切,并为用户提供一个稳定和良好的经验。 所以,我很想知道如何做到以下几点: 将GetUserMedia原始数据分解成数据包,并将其转换为mp3,并将其stream式传输到服务器,在该服务器上,脚本(NodJS可能)可以将其存储在本地,并实时调入任何人。 我对任何你推荐的工具都很开放,我知道NodeJS将出现在解决scheme中,我很乐意使用它。 如果stream式传输可以通过第三方工具完成,那么我就没有问题了。 预先感谢您。

暂停/播放和停止节点stream

我正在创build一个覆盆子pi的基本audio播放器。 我有一个基本的MP3播放器在客户端的基本控制…播放/暂停和停止。 当用户点击播放时,套接字发送一个mp3 url到服务器,该服务器正在使用捕获url的节点并在扬声器上播放。 在使stream在服务器上暂停/继续播放时遇到问题。 以下是我的代码 var app = require("express")(); var http = require('http').Server(app); var io = require("socket.io")(http); var lame = require('lame'); var request = require('request'); var Speaker = require('speaker'); io.on('connection', function(socket){ var playing; var decoder = new lame.Decoder(); playing = socket.on('play', function(data){ var stream; stream = request(data.songurl); decoder.on('format', function(){ mpg123Util.setVolume(decoder.mh, 1.0) }) return stream; […]

使用socketio的audio聊天

我在nodejs中是新的。 我正在开发语音聊天应用程序,在应用程序客户端可以说话,他的声音将广播(使用nodejs服务器)到其他客户端,我用socketio从麦克风发送声音到服务器,但我不知道如何接收器声音在客户端,谁能帮我? 用于发送语音的客户端代码(我不知道这是从麦克风发送语音的真实方式): navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; navigator.getUserMedia( {audio:true}, gotStream , onError ); function gotStream(stream) { var context; if (window.AudioContext) { context = new AudioContext(); } else { context = new webkitAudioContext(); } var mediastream = context.createMediaStreamSource(stream); var bufferSize = 2048; var myscriptnode = context.createScriptProcessor(bufferSize, 1, 1); myscriptnode.onaudioprocess = function […]

蓝牙audiostream从Android到电子应用程序?

我目前正在用Electron构build一款树莓派车载电脑。 几乎一切都完成了。 剩下两件事。 其中之一是从我的手机到电子应用程序的蓝牙audiostream。 有没有办法通过Android手机的“高级audio”蓝牙服务来实现? 我想要一个像蓝牙的地方,可以播放/暂停,跳过等歌曲。 蓝牙连接本身不是问题。 已经做到了OBDII适配器,以获得一个不错的汽车健康监测。 先谢谢你!

客户端nodeJS传递stream,用于audiostream

我们在一个stream媒体工具上工作,例如能够播放Youtube的音乐。 我们用NodeJS和YTDL做了第一个镜头。 它完全没问题,除了stream从Youtube到我们的服务器,然后到客户端,我们想直接从Youtube到客户端的stream。 为此,我在YTDL上使用了YTDL ,所以现在我可以在客户端获得一个pass-through nodeJSstream,但是我不知道如何使用它,因为它没有使用像.pipe()这样的.pipe()方法,也没有如何获取stream原始数据并将其写入临时的mp3文件。 我知道这不是一个微不足道的方法,但这是我第一次做这样的事情,而且我对这个问题的经验也不是很多,所以如果你有其他方法可行的话,我会乐于听他们的。