gpt4 book ai didi

ffmpeg - 如何使用 ffmpeg 将 rtsp 流转换为 mjpeg (http)

转载 作者:行者123 更新时间:2023-12-04 22:50:06 29 4
gpt4 key购买 nike

我希望捕获一个 rtsp 流并使用 ffmpeg 将其转换为 mjpeg(通过 http)流。我正在运行 Ubuntu 20。我搜索并搜索了解决方案,大部分都找到了:
a) 需要 ffserver 的解决方案(已弃用)
b) 从 mjpeg 转换为 rtsp 的解决方案
c) 从 rtsp 转换为 hls(nginx、wowza 等)的解决方案在我的应用程序中不起作用。我需要 http 输出为 mjpeg。
d) vlc - 确实有效,但需要太多可用的处理器(80%)
e) rtsp2mjpg - 我安装的 github 项目,但无法开始工作并且无法获得任何支持。
我不是 ffmpeg 专家,所以如果有人可以引导我完成 ffmpeg 解决方案,如果它存在,我将非常感激。

最佳答案

在找到与您完全相同的事情之后,我最近自己解决了这个问题。您需要的两部分是 (1) 脚本中的 ffmpeg 转换,以及 (2) lighttpd+cgibin 或 nginix+fastcgi 之类的东西,通过 http/https 提供服务。不过,我不希望您在 CPU 使用方面比 vlc 做得更好。
这个 bash 脚本会将 ffmpeg 转换为 MJPEG,并将输出发送到标准输出。把它放在 lighttpd 的 cgi-bin 文件夹中(我是/var/www/cgi-bin)。将其命名为“webcamstream”,并调整 rtsp://URL 以适合您的相机:

#!/bin/bash

echo "Content-Type: multipart/x-mixed-replace;boundary=ffmpeg"
echo "Cache-Control: no-cache"
echo ""
ffmpeg -i "rtsp://192.168.60.13:554/user=admin&password=SECRET&channel=1&stream=0.sdp" -c:v mjpeg -q:v 1 -f mpjpeg -an -
为 lighttpd 启用 cgi-bin:
ln -s /etc/lighttpd/conf-available/10-cgi.conf /etc/lighttpd/conf-enabled/10-cgi.conf
..然后调整 lighttp 的 cgi-bin 配置(/etc/lighttpd/conf-enabled/10-cgi.conf),如下所示。 stream-response-body 设置很重要,因为它会在客户端断开连接时停止流,并避免让 lighttpd 在向客户端发送任何内容之前尝试缓冲整个无限流。
server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
server.stream-response-body = 2
cgi.assign = ( "" => "" )
alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin/" )
}
使 cgi-bin 脚本可执行并重新启动 lig​​httpd:
chmod +x /var/www/cgi-bin/webcamstream
systemctl restart lighttpd
……应该就是这样。然后,您可以通过这样的 URL 访问 MJPEG 流,其中最后一部分是您的脚本名称:
http://serveraddress/cgi-bin/webcamstream
我在这里写得更详细: Converting RTSP to HTTP on demand
据我所知,您无法避免转换对 CPU 的影响——RTSP 与 MJPEG 帧的格式/编码是不同的。我通过配置相机以降低源的帧速率和分辨率来减少 CPU 负载,直到它在 ffmpeg 上成为可接受的负载。您也可以使用 ffmpeg 参数更改分辨率和帧速率,但它仍然必须首先解码完整帧并进行调整大小的工作。
上面的路径是在 Debian 上的,所以你可能需要调整它们以适应你的 Ubuntu 系统。

关于ffmpeg - 如何使用 ffmpeg 将 rtsp 流转换为 mjpeg (http),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68368511/

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