> 文章列表 > FFmpeg 中 RTSP推流桌面和Android设备延时测试

FFmpeg 中 RTSP推流桌面和Android设备延时测试

FFmpeg 中 RTSP推流桌面和Android设备延时测试

文章目录

  • 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

下载源码:选择一个就好

FFmpeg 中 RTSP推流桌面和Android设备延时测试
FFmpeg 中 RTSP推流桌面和Android设备延时测试

● GitHub

Releases · BtbN/FFmpeg-Builds (github.com)
FFmpeg 中 RTSP推流桌面和Android设备延时测试

● CSDN 已上传 ffmpeg 和 rtsp 服务器:

‍FFmpeg RTSP 推流桌面

1.2 RTSP 推流服务器

● GitHub

Releases · aler9/mediamtx (github.com)

FFmpeg 中 RTSP推流桌面和Android设备延时测试

2. 执行流程

​ 解压后:

FFmpeg 中 RTSP推流桌面和Android设备延时测试

2.1 启动服务器

● ​双击 运行 即可:

FFmpeg 中 RTSP推流桌面和Android设备延时测试

● ​弹出此界面:

FFmpeg 中 RTSP推流桌面和Android设备延时测试

2.2 执行桌面推流

● 在源码 bin 文件下打开终端:

FFmpeg 中 RTSP推流桌面和Android设备延时测试

● 运行指令:

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流,地址为本机地址

● 开始推流

FFmpeg 中 RTSP推流桌面和Android设备延时测试

● 打开打开北京时间:

北京时间校准_北京时间在线校准显示毫秒 - 倒计时器 (daojishiqi.com)

2.3 播放

● vlc 播放流:

rtsp://127.0.0.1:8554/stream

FFmpeg 中 RTSP推流桌面和Android设备延时测试

● 显示:

可以看出vlc的延时相当大的:

FFmpeg 中 RTSP推流桌面和Android设备延时测试

3. 安卓测试

● ipconfig 查到window本机地址为 192.168.xx.xx

● 安卓端播放器输入地址 rtsp://192.168.xx.xx/stream

安卓采用 FFMPEG 4.4.1版本,使用 QVideoFrame 代替sws方案,VideoOutput 来刷新图片

FFmpeg 中 RTSP推流桌面和Android设备延时测试
FFmpeg 中 RTSP推流桌面和Android设备延时测试
加上图传再测试,约增加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 为格式化输出到哪里