Tag: audio

当从socket.io – node.js接收到消息时,从客户端播放audio

我已经寻找了一个解决这个问题的时间,但没有find太多。 我的目标是从udp客户端收到一条消息,服务器接收并转发给Web客户端,每次收到消息时都会播放一个audio剪辑。 但是,由于某些原因,audio不能播放。 如果我直接从我的目录打开页面,audio可以播放,但如果我尝试通过本地访问它,它无法加载。 有谁知道一个解决scheme? 这里是客户端JavaScript。 var mySound = new Audio('/public/audio/Bloom.mp3'); mySound.load(); var socket = io.connect('http://localhost'); socket.on('message', function(data){ console.log(data); $('#content').text(data); mySound.play(); //document.getElementById('audiotag1').play(); }); 这个页面是由server.js服务的,它是一个使用socket.io和express的node.js文件。 我没有收到我的console.log中的任何错误。 这里是server.js var app = require('express')() , server = require('http').Server(app) , io =require('socket.io')(server) , dgram = require('dgram'); var httpPort = 1234; var udpPort = 5000; server.listen(httpPort); app.use(server.express.static( __dirname + '/public')); app.get('/', […]

原始缓冲区数据在audio标签中播放

我正在制作一个Web应用程序,在这里我使用套接字IO将用户麦克风audio传输到NODE JS服务器,然后重新传播数据。 <Buffer 59 00 76 00 92 00 a0 00 aa 00 b1 00 aa 00 92 00 7c 00 74 00 75 00 7e 00 8f 00 9d 00 9c 00 98 00 94 00 85 00 7c 00 8a 00 8f 00 6c 00 4f 00 5d 00 67 00 48 …> […]

将videostream转换为audio时(w / FFMPEG&Node.js)设置内容长度

所以我正在构build一个程序,要求我拍摄一个video并将其转换为audio。 我目前正在通过node.js将audio直接传输到浏览器,但是我遇到了一个主要问题:我不知道如何找出我的audio有多less个字节。 结果,当我没有得到正确的内容长度时,浏览器一直在抛出net::ERR_CONTENT_LENGTH_MISMATCH 。 我尝试了几种策略,都失败了: 手动计算大小(秒*比特率(kbps)*(1024/8))。 这产生了一个近似的答案,因为我只知道长度到最近的几秒钟。 即使我比较接近,我仍然得到相同的MISMATCH错误。 将streampipe道传送到缓冲区,获取缓冲区的长度,并将缓冲区传送到浏览器 这可以工作,但是加载每首歌曲可能需要15-20秒。 这是非常慢,并在服务器上承受相当大的负载

带有AudioContext的Socket.io在接收时发送和接收audio错误

我正在尝试构build一些东西,用户可以使用socket.io,audioContext,js作为前端,Node.js,socket.io作为服务器,让用户可以即时发送audio给很多人。 我可以录制audio,将其发送到服务器并将其发回给其他用户,但我无法播放这些数据。 我想这肯定是我发送它们的问题,或者我如何处理接收它们的缓冲区。 我得到以下错误: 更新! 传递给decodeAudioData的缓冲区包含未知的内容types。 audio传递正常,缓冲区没有错误地创build,但没有声音反馈。 用户按下logging,并开始logging/stream与他以下function: 这是如何开始的: navigator.getUserMedia({audio: true,video: false}, initializeRecorder, errorCallback); function initializeRecorder(stream) { var bufferSize = 2048; audioCtx = new (window.AudioContext || window.webkitAudioContext)(); var source = audioCtx.createMediaStreamSource(stream); var recorder = audioCtx.createScriptProcessor(bufferSize, 1, 1); recorder.onaudioprocess = recorderProcess; source.connect(recorder); recorder.connect(audioCtx.destination); recording = true; initialized = true; play = false; stop = true; } […]

使用Node.js创builddynamicaudio

问题 我的应用程序(莫尔斯电码翻译器)接受用户input并将文本转换为在路线后播放的声音。 但是,我目前的应用程序将只播放一个声音,即使多次调用该方法也不会更多。 它从节点进程播放,而不是在客户端。 我觉得这需要创build一些types的audiostream,然后将其作为响应的一部分发送给用户,但我需要一些关于如何做到这一点的指针。 编辑 看起来这不是特别容易,所以我猜测作弊的方法就是为每个声音创build一个audio文件,然后为那些给定的声音渲染一个audio元素。 我很想看到一个非常简单的例子,就是如何dynamic地通过Node.js制作audio。 结构体 在我的服务器中,我尝试调用短audio爆发的函数,但只引发一个声音。 Server.js var express = require('express'), jade = require('jade'), bodyParser = require('body-parser'), morseCode = require('./lib/translateMorseCode'), playSound = require('./lib/playSound'), sfx = require('sfx'), app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.set('view engine', 'jade'); app.set('views', './views'); app.get('/', function(req, res) { res.render('index'); }); app.get('/translation', function(req, res) { var untranslated = […]

将PCM-Streamspipe道化为一个function

我有两个PCMstream( decoder1 + decoder2 ): var readable1 = fs.createReadStream("track1.mp3"); var decoder1 = new lame.Decoder({ channels: 2, mode: lame.STEREO }); readable1.pipe(decoder1); 和 var readable2 = fs.createReadStream("track2.mp3"); var decoder2 = new lame.Decoder({ channels: 2, mode: lame.STEREO }); readable2.pipe(decoder2); 现在我想把stream传输到一个混合函数中,我可以使用这个缓冲区函数: function mixStream(buf1, buf2, callback) { // The mixStream-Function is not implemented yet (dummy) var out = new Buffer(buf1.length); […]

用node.js和node-record-lpcm16录制16位WAVEaudio

我使用的系统是一个名为Raspbian(基于Debian的)的Linux发行版。 我试图用node-record-lpcm16录制一个.wavaudio文件。 它开始录制,但一旦启动完成。 结束时间是56ms。 因此test.wav结果为空。 我不明白为什么它不工作,因为没有发生错误。 你有什么主意吗? 谢谢!

Google语音API使用SOX时语音识别不好

我正尝试用节点js创build非常简单的语音识别软件。 我已经连接谷歌语音API,并可以发送正确的录制的.wav文件,并获得转录和识别是非常好的(用Audacity录制) 但我有问题得到“即时”的语音识别,如直接从麦克风发送到Gooegle语音API的audiostream。 这是我logging语音并发送到谷歌的主要方法。 function recognize(encoding, sampleRateHertz, languageCode) { const request = { config: { encoding: encoding, sampleRateHertz: sampleRateHertz, languageCode: languageCode }, interimResults: true // If you want interim results, set this to true }; // Imports the Google Cloud client library const Speech = require('@google-cloud/speech'); // Instantiates a client const speech = Speech(); // […]

Web Audio Api:通过套接字从nodejs服务器播放数据块的正确方法

我正在使用下面的代码来解码nodejs套接字的audio块 window.AudioContext = window.AudioContext || window.webkitAudioContext; var context = new AudioContext(); var delayTime = 0; var init = 0; var audioStack = []; var nextTime = 0; client.on('stream', function(stream, meta){ stream.on('data', function(data) { context.decodeAudioData(data, function(buffer) { audioStack.push(buffer); if ((init!=0) || (audioStack.length > 10)) { // make sure we put at least 10 chunks in the […]

使用fluent-ffmpeg来判断文件是video还是audio

我在NodeJS中使用node-fluent-ffmpeg模块。 fluent-ffmpeg提供获取video和audio文件的元数据的function是非常好的。 https://github.com/schaermu/node-fluent-ffmpeg#reading-video-metadata 我曾尝试在Mac OS上使用元数据中的“分辨率”属性来判断一个文件是否只是audio或video,即如果resolution.w和resolution.h都是0,那么这个文件就是一个audio文件。 这项工作在Mac OS上很好。 但一些奇怪的事情发生,这不适用于Windows平台(我试过Windows 7 64位和Windows 2008)使用最新的ffmpeg。 即使我通过fluent-ffmpeg放入一个.mp3文件,结果如下所示: video: { container:'mp3', … resolution: {w:300,h:300}, resolutionSquare: {w:300,h:300}, aspectString: '1:1', … } audio: { codec:'mp3', bitrate:64, sample_rate:44100, stream:0, channels:1 } 我不是为什么有一个“决议”,因为它是一个纯粹的audio文件。 那么是否有任何可靠的方法来查明该文件是仅audio还是来自元数据的video? 或者我应该使用ffmpeg命令行来找出它?