将RTSP流转换为MP4

时间:2013-10-12 01:20:20

标签: html5 node.js video ffmpeg rtsp

我有一台支持RTSP的IP摄像头,我需要使用HTML5将此流显示给多个客户端。

由于HTML Video标签不支持RTSP,我正在调用ffmpeg将其编码为WEBM流,但结果非常糟糕并且会扭曲原始流。

使用的命令如下: ffmpeg -i my_RSTP_URL -vcodec libvpx -f webm -

要分发流我正在使用Node.js实例,该实例在需要时通过ffpmeg调用rtsp流。

解决方案如下:

相机--Via RSTP - > ffmpeg - 编码到WEBM - > Node.js --Via HTML5视频 - >客户端

Node.js代码:

    var request = require('request');
    var http = require('http');
    var child_process = require("child_process");
    var stdouts = {};

    http.createServer(function (req, resp) {
    switch (params[0])
    {
      case "LIVE":
        resp.writeHead(200, {'Content-Type': 'video/mp4', 'Connection': 'keep-alive'});


            // Start ffmpeg
                var ffmpeg = child_process.spawn("ffmpeg",[
                    "-i","my_RSTP_URL", // Capture offset
                    "-vcodec","libvpx",      // vp8 encoding
                    "-f","webm",             // File format
                    "-"                      // Output to STDOUT
                ]);

            ffmpeg.on('exit', function()
                {
                    console.log('ffmpeg terminado');
                });

            ffmpeg.on('error',function(e)
            {
                console.log(e);
            })

            ffmpeg.stdout.on('data',function(data)
            {
                console.log('datos'+data);
            });


            ffmpeg.stderr.on('data', function(data) {
                console.log('stderr'+data);
            });

            stdouts[params[1]] = ffmpeg.stdout;

            // Pipe the video output to the client response
            ffmpeg.stdout.pipe(resp);

        console.log("Initializing camera");
        break;
    }


    }).listen(8088);

    console.log('Server running at port 8088');

我使用错误的库编解码器吗?或者为什么我会得到如此奇怪的结果?

1 个答案:

答案 0 :(得分:1)

在我看来,这有助于https://github.com/kyriesent/node-rtsp-stream 我也使用过这项技术,您可以访问 bitBucket 上的存储库:https://bitbucket.org/kaleniuk_ihor/neuro_vision/src/db_watch/

另一方面,您的代码可能无法运行,因为您没有在驱动器 C 的根目录下安装 ffmpeg