大家好,欢迎来到IT知识分享网。
最近遇到一个技术需求,要录制电脑桌面并推流为 rtsp 流,目的是满足巡课系统对智能大屏的巡检功能。
桌面录屏并推流 rtmp,那么用 OBS 当然最方便,可是 OBS 好像无法推 rtsp 流,或许是我没有找到对应的方法,另外这个需求中也不允许安装 OBS。
经过一番探索,发现一种比较合适的方案:使用 ffmpeg 和 mediamtx 将 Windows 屏幕推流为 rtsp。
其实 ffmpeg 推流和录屏都比较简单,关键在于如何在桌面端提供一个 rtsp 服务器,而 mediamtx 刚好是业内常用的媒体服务器,并提供 Windows 客户端。
整合包
使用下面这个整合包,依次点击批处理文件,就可以实现录制桌面并推流 rtsp。
这个平台不太适合方便附件,直接把批处理脚本发出来。
# 第1步.bat .\mediamtx.exe # 第2步.bat .\ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -bf 0 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/desktop # 第3步.bat @echo off setlocal EnableDelayedExpansion set ipconfig_output= for /f "usebackq delims=" %%i in (`ipconfig`) do ( set "line=%%i" set ipconfig_output=!ipconfig_output!!line! REM 检查是否包含 IPv4 地址行 echo !line! | findstr /c:"IPv4" >nul if !errorlevel! equ 0 ( REM 提取 IP 地址并输出 for /f "tokens=2 delims=:" %%a in ("!line!") do ( set "ip_address=%%a" echo IP: !ip_address:~1! REM 删除空格并构建 rtsp URL set "rtsp_url=rtsp://!ip_address: =!:8554/desktop" echo RTSP URL: !rtsp_url! echo !rtsp_url!>> rtsp_url.txt ) ) ) pause
详细步骤
步骤一:下载 mediamtx
打开 github.com/bluenviron/… 下载合适的 windows 版本的包,下载后解压到本地。
步骤二:下载 ffmpeg
打开 www.gyan.dev/ffmpeg/buil… 下载 ffmpeg 包,下载后解压到本地
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】
音视频免费学习地址:https://xxetb.xet.tech/s/2cGd0
【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击加群免费领取~
步骤三:启动 mediamtx
在步骤一种解压后,双击 mediamtx.exe 启动,将打开命令行,出现如下界面
步骤四:用 ffmpeg 录屏并推流
打开 ffmpeg.exe 所在的目录,按住 shift,右键打开菜单,选择终端或 Powershell 窗口。
在命令行窗口中输入下面这段命令
.\ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -bf 0 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/desktop
这段代码的意思是用 gdi api 录制屏幕,设置帧率 30,使用 H264 编码,去掉 B 帧,并推流到 rtsp 地址。
注意,这里的 desktop 可以改为其他字符,例如 1,test,mystream 等。
这样一来,就可以通过 rtsp://localhost:8554/desktop 拉流了,如果需要实际 IP,看步骤五。
如果有多个屏幕,希望只录制主屏幕,假设主屏幕是宽高是1920*1080,可以使用一下命令
ffmpeg -f gdigrab -framerate 30 -i desktop -vf "crop=1920:1080:0:0" -c:v libx264 -bf 0 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/desktop
步骤五:获取本地 IP地址
打开命令行,输入 ipconfig 获取本地 IP,如下所示,那么拉流 rtsp 地址就是 rtsp://172.20.236.38:8554/desktop
可以通过 VLC 来监测 rtsp 流地址是否可用。
原文 OBS 做不到?用 ffmpeg 录屏并推rtsp流
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/94862.html