gpt4 book ai didi

html - 将 RTSP 流转换为 MP4

转载 作者:行者123 更新时间:2023-12-03 17:18:49 24 4
gpt4 key购买 nike

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

由于 HTML 视频标签不支持 RTSP,所以我调用 ffmpeg 将其编码为 WEBM 流,但结果非常有问题并且扭曲了原始流。

我使用的命令如下:ffmpeg -i my_RSTP_URL -vcodec libvpx -f webm -
为了分发流,我使用了一个 Node.js 实例,该实例在需要时通过 ffpmeg 调用 rtsp 流。

解决方案如下所示:

Camera --Via RSTP--> ffmpeg --Encodes to WEBM--> Node.js --Via HTML5 Video--> Client

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');

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

最佳答案

在我看来,这可以帮助 https://github.com/kyriesent/node-rtsp-stream
我也使用过这项技术,您可以访问 bitBucket 上的存储库:https://bitbucket.org/kaleniuk_ihor/neuro_vision/src/db_watch/
Оn 另一方面,您的代码可能无法工作,因为您没有安装 ffmpeg 在驱动器的根目录 中号 .

关于html - 将 RTSP 流转换为 MP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com