imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放

Nginx 服务器:它是一个功能强大的Web 服务器。就像一个"万能的瑞士军刀",它不仅能提供静态网页,还能通过加载"模块"来扩展功能,比如加载一个 rtmp 模块,它就摇身一变,成了一个流媒体服务器。

RTMP (Real-Time Messaging Protocol):它是一种实时消息传输协议。它专门为低延迟、实时性的音视频流设计。它规定了数据应该如何打包、如何传输、如何建立连接。

imx6ull 开发板上,用FFmpeg推流:

  • 命令行一行搞定,不用写代码
  • 支持 V4L2 直接读摄像头
  • 支持 RTMP 推流
  • 参数丰富,后面可以调码率、分辨率、帧率

安装清单:

  1. Ubuntu 虚拟机 安装 nginx 和 rtmp 模块 , 安装 ffmpeg 。

  2. 开发板安装 ffmpeg,

**第一步:**虚拟机安装 nginx 和 rtmp 模块:

sudo apt update

sudo apt install nginx libnginx-mod-rtmp

安装后,修改 nginx 配置,sudo vim /etc/nginx/nginx.conf

文件的最末尾(最后一个大括号 } 的外面),添加以下 RTMP 配置:

复制代码
rtmp {
    server {
        listen 1935;
        application live {
            live on;
            record off;
        }
    }
}

改完后,保存退出,

重启 nginx 服务使配置生效:

sudo systemctl restart nginx

然后,Ubuntu 虚拟机 安装 ffmpeg :

sudo apt update

sudo apt install ffmpeg

验证安装:ffmpeg -version

**第二步:**确保开发板上有 ffmpeg

在开发板上输入 ffmpeg -version 看看有没有,

没有的话,上一篇博客,有 ffmpeg 安装教程。安装的 ffmpeg 本版不要太低,功能不全,有些参数不支持设置。

确保开发板能 ping 通 Ubuntu 虚拟机的 IP

第三步:推流拉流 测试

imx6ull 开发板, 执行推流命令(320x240 ,15fps):

复制代码
ffmpeg -f v4l2 -video_size 320x240 -framerate 15 -i /dev/video1 -q 10 -f flv rtmp://192.168.137.199:1935/live/test

参数 framerate:帧率 。

虚拟机用ffplay播放,拉流命令:

复制代码
ffplay rtmp://192.168.137.199:1935/live/test

ffplay 播放摄像头画面 ,延迟6秒,此时,关闭开发板推流,再重新推流,反复几次,ffplay画面 延迟会小于1秒.

观察到的这个现象,精准地击中了直播流媒体技术中最核心的痛点:缓冲与同步机制。

RTMP 协议本身没有"绝对时间"的概念,它只负责把数据包按顺序发出去。延迟是"攒"出来的。

要实现真正的低延迟,必须两头一起掐:让推流端不攒数据,让拉流端丢弃旧数据。

第一步:在虚拟机终端,输入优化后的 ffplay 拉流命令

复制代码
ffplay -fflags nobuffer -flags low_delay -framedrop rtmp://192.168.137.199:1935/live/test
  • -fflags nobuffer:禁用 ffplay 的输入缓冲区,收到数据立刻解码显示,不"攒"。
  • -flags low_delay:告诉解码器牺牲一切换取低延迟。
  • -framedrop:如果解码来不及,允许丢帧追赶进度,绝不播放旧画面。

第二步:优化推流端(ffmpeg), 缩短关键帧间隔

测试 320x240 ,15fps, 码率200K .

推流拉流优化后,画面延迟非常低,不到1秒, imx6ull cpu 占用率 60%

推流命令:

(如果画面需要水平翻转: -pix_fmt yuv420p 改为 -vf "hflip,format=yuv420p" )

(如果画面需要上下翻转: -pix_fmt yuv420p 改为 -vf "vflip,hflip,format=yuv420p" )

复制代码
ffmpeg -f v4l2 \
-framerate 15 \
-video_size 320x240 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 200k \
-f flv rtmp://192.168.137.199:1935/live/tes

接下来,测试其他的分辨率看看,修改推流命令,拉流不变:

测试 320x240 ,提高到 30fps, 码率 200k。

画面延迟 1秒, cpu 占用率 99%

复制代码
ffmpeg -f v4l2 \
-framerate 30 \
-video_size 320x240 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 200k \
-f flv rtmp://192.168.137.199:1935/live/test

测试 480x272 ,15fps, ,码率提升到 350k。

画面延迟 小于1秒, imx6ull cpu 占用率 93%

推流命令:

复制代码
ffmpeg -f v4l2 \
-framerate 15 \
-video_size 480x272 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 350k \
-f flv rtmp://192.168.137.199:1935/live/test

测试 480x272 ,30fps, ,码率 350k。

画面延迟 2秒, cpu 占用率是 99%

推流命令:

复制代码
ffmpeg -f v4l2 \
-framerate 30 \
-video_size 480x272 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 350k \
-f flv rtmp://192.168.137.199:1935/live/test

测试 640x480 ,15fps, 像素数比 320x240 多 4 倍,码率提升到 600k。

画面延迟 5秒, cpu 占用率 99%

推流命令:

复制代码
ffmpeg -f v4l2 \
-framerate 15 \
-video_size 640x480 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 600k \
-f flv rtmp://192.168.137.199:1935/live/test

测试 800x480 ,15fps,码率提升到 800k。

画面延迟 5秒, cpu 占用率是 99%

推流命令:

复制代码
ffmpeg -f v4l2 \
-framerate 15 \
-video_size 800x480 \
-i /dev/video1 \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-preset ultrafast \
-tune zerolatency \
-g 15 \
-keyint_min 15 \
-b:v 800k \
-f flv rtmp://192.168.137.199:1935/live/test
相关推荐
天天进步20151 小时前
Python全栈项目--基于深度学习的视频目标跟踪系统
python·深度学习·音视频
shandianchengzi2 小时前
【记录】Ghidra|Ubuntu 26.04 下 Ghidra 界面缩放完整指南
linux·ubuntu·逆向·ghidra
Soari2 小时前
Ubuntu 根分区文件系统损坏,系统启动时自动检查失败
linux·运维·ubuntu
杨云龙UP2 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
广州灵眸科技有限公司2 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器
不脱发的程序猿3 小时前
AI Coding时上下文不够用咋办?
单片机·嵌入式硬件·嵌入式
EasyDSS3 小时前
私有化音视频系统/视频高清直播点播EasyDSS重塑企业视频门户新生态
音视频
Peace4 小时前
【Prometheus】
linux·运维·prometheus
bbaydnog4 小时前
嵌入式面试高频题第5弹:DMA原理、看门狗机制、低功耗模式,这3个搞不懂简历直接被筛
面试·dma·嵌入式