文章目录
- 1. FFMPEG 推流:
- 1.1 FFmpeg 源码准备
- 1.2 RTSP 推流服务器
- 2. 执行流程
- 2.1 启动服务器
- 2.2 执行桌面推流
- 2.3 播放
- 3. 安卓测试
1. FFMPEG 推流:
1.1 FFmpeg 源码准备
官网,GitHub,CSDN中选一个就好:
● 官网:
Builds - CODEX FFMPEG @ gyan.dev
下载源码:选择一个就好
● GitHub:
Releases · BtbN/FFmpeg-Builds (github.com)
● CSDN 已上传 ffmpeg 和 rtsp 服务器:
FFmpeg RTSP 推流桌面
1.2 RTSP 推流服务器
● GitHub:
Releases · aler9/mediamtx (github.com)
2. 执行流程
解压后:
2.1 启动服务器
● 双击 运行 即可:
● 弹出此界面:
2.2 执行桌面推流
● 在源码 bin 文件下打开终端:
● 运行指令:
ffmpeg -f gdigrab -i desktop -s 1280x720 -rtsp_transport tcp -preset ultrafast -acodec libfaac -f rtsp rtsp://127.0.0.1:8554/stream
参数说明:
-f gdigrab
,gdigrab基于Win32 GDI的屏幕捕获设备。可以捕获Windows桌面屏幕显示区域的画面图像
-i desktop
: 指定输入文件。 desktop是指输入设备是桌面屏幕
-f rtsp rtsp://127.0.0.1:8554/stream
: 输出格式为rtsp流,地址为本机地址
● 开始推流:
● 打开打开北京时间:
北京时间校准_北京时间在线校准显示毫秒 - 倒计时器 (daojishiqi.com)
2.3 播放
● vlc 播放流:
rtsp://127.0.0.1:8554/stream
● 显示:
可以看出vlc的延时相当大的:
3. 安卓测试
● ipconfig 查到window本机地址为 192.168.xx.xx
● 安卓端播放器输入地址 rtsp://192.168.xx.xx/stream
安卓采用 FFMPEG 4.4.1版本,使用 QVideoFrame 代替sws方案,VideoOutput 来刷新图片
加上图传再测试,约增加50~100ms延时
● 其它方式推流:
-
本文介绍的桌面推流:
ffmpeg -f gdigrab -i desktop -s 1280x720 -rtsp_transport tcp -preset ultrafast -acodec libfaac -f rtsp rtsp://127.0.0.1:8554/stream
-
UDP推流:
ffmpeg -re -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
-
TCP推流:
ffmpeg -re -i input.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream
-
循环推流:
ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
其中: -re 为以流的方式读取; -stream_loop 为循环读取视频源的次数,-1为无限循环; -i 为输入的文件; -f 为格式化输出到哪里