Nodejs mp3流媒体

时间:2013-07-03 12:18:50

标签: node.js audio streaming

我尝试创建一个小型nodejs服务器,它将接收将流式传输音频的请求。 我目前正在使用0.10.5 api。我必须承认我是nodejs的新手。我不知道如何编辑此代码以成功传输音频。

        var http = environment.http;

        //Steaming Audio
        var path = environment.path,
            util = environment.util,
            url = environment.url;

        http.createServer(function (request, response) {

            var queryData = url.parse(request.url, true).query;
            window.console.log(queryData);
            if (!queryData.hasOwnProperty('file')) {
                response.writeHead(404, {
                    'Content-Type': 'text/plain'
                });
                response.end();
                window.console.log('In here');

            } else {
                window.console.log('In here2');
                var filePath = queryData.file;
                var extension = self.getExtension(filePath);
                var acceptedExtensions = ['mp3', 'wav', 'aiff'];
                if ($.inArray(extension, acceptedExtensions) == -1) {
                    response.writeHead(404, {
                        'Content-Type': 'text/plain'
                    });
                    response.end();
                }

                var stat = environment.fs.statSync(filePath);
                response.writeHead(200, {
                    'Content-Type': 'audio/mpeg',
                    'Content-Length': stat.size
                });
                //window.console.log(filePath);
                var readStream = environment.fs.createReadStream(filePath);
                //var readable = new require('stream').Readable();
                readStream.pipe(response);

            }


        }).listen(10000);

当我提出请求时 http://localhost:10000/?file=/Users/acasanova/Music/Cass%20Beats/45th.mp3 控制台显示“In here2”,然后“In here”。我试图找出为什么它似乎两次满足请求以及为什么音频没有被流式传输。

1 个答案:

答案 0 :(得分:0)

您在这里获得第一个回复的一个非常简单的原因是'可能是因为您的浏览器正在寻找一个favicon文件,您的节点应用程序用404响应。这是我在node.js中尝试编写一个简单的应用程序时通常会观察到的。

至于为什么音频不是流媒体,我必须正确地研究它。但我不知道为什么你要设置一个内容长度为node.js httpServer,因为它支持默认编写分块响应(Transfer-Encoding: chunked)(这是你需要的流媒体)。这种方法有一些明显的错误,但我必须正确地研究它,给你一个明确的答案。