# 基于Qt v4l2 ffmpeg rkmpp rtmp实现的拍照 录像 推流应用 **Repository Path**: gll555/Camera-and-Video-Streaming-Application-Based-on-Qt-v4l2-ffmpeg-rkmpp-rtmp ## Basic Information - **Project Name**: 基于Qt v4l2 ffmpeg rkmpp rtmp实现的拍照 录像 推流应用 - **Description**: 这个项目是一个基于 Qt 和 V4L2 的视频捕获与处理应用,结合 FFmpeg 和 Rockchip MPP(媒体处理平台)实现摄像头视频的捕获、显示、录制、快照和 RTMP 推流功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-04-26 - **Last Updated**: 2026-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Qt v4l2 ffmpeg rkmpp rtmp实现的拍照 录像 推流应用 #### 介绍 这个项目是一个基于 Qt 和 V4L2 的视频捕获与处理应用,结合 FFmpeg 和 Rockchip MPP(媒体处理平台)实现摄像头视频的捕获、显示、录制、快照和 RTMP 推流功能。 #### 软件架构 软件架构说明 香橙派3B rk3566 树莓派CSI摄像头 v4l2捕获UYVY422帧格式 香橙派RKMPP硬件加速编解码 #### 安装教程 1. 安装ffmpeg 2. 安装mpp 3. 注意我的摄像头不支持单平面捕获,是多平面捕获,因此您可能需要修改对应的 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE(多平面) ![输入图片说明](image3.png) 4. 我的v4l2设置的视频帧格式为 V4L2_PIX_FMT_UYVY ,虽然查询到的帧格式不止这一个,但只有它能用,这个您也可以对应修改,参考网上的v4l2教程和官方源码 5. 在Cpp环境下编译, 要用extern "c"把c文件引用进来, ![输入图片说明](image5.png), 如果这样写,会报错 ![输入图片说明](image7.png) 6. rtmp推流 url: "rtmp://47.110.53.247:1935/live/stream" ,47.110.53.247是我的云服务器地址,这里您可以更改为你的服务端地址 rtmp配置可参考,或者自己上网搜索 : https://blog.csdn.net/qq_46470984/article/details/123756377 https://www.cnblogs.com/linuxAndMcu/p/12517787.html https://www.cnblogs.com/zhuzi1/p/17056030.html ![输入图片说明](image12.png) ![输入图片说明](image8.png) #### 使用说明 1. qmake qt_v4l2_ffmpeg.pro 生成Makefile 2. make -j$(nproc) 编译生成可执行程序 qt_v4l2_ffmpeg 注意:qt_v4l2_ffmpeg.pro需添加mpp 头文件路径和ffmpeg 动态链接库路径 /mpp/inc , /mpp/osal inc, /mpp/codec/inc , /mpp/mpp/inc , /mpp/mpp/base/inc, mpp/kmpp/inc, ![输入图片说明](image1.png) ![输入图片说明](image4.png) ![输入图片说明](image14.png) 3. 执行程序 ./qt_v4l2_ffmpeg ![输入图片说明](image10.png) ![输入图片说明](image11.png) 4. 在主目录下会自动生成,保存图片的视频的目录 保存的图片和视频保存在主目录下 ![输入图片说明](image2.png) 5. 开始推流 用vlc拉流 ![输入图片说明](image13.png) #### mpp文件可参考 https://github.com/nyanmisaka/ffmpeg-rockchip 编译方法 :https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Compilation https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/lubancat_rk_software_hardware/software/mpp/mpp.html #### 参考资料 ### v4l2 https://github.com/torvalds/linux/blob/master/include/uapi/linux/videodev2.h https://www.cnblogs.com/emouse/archive/2013/03/04/2943243.html https://blog.csdn.net/Cgs723/article/details/113826652 https://www.cnblogs.com/silence-hust/p/4464291.html ### ffmpeg 这个是参考的ffmpeg两个编解码examples 分别对应的是 解码视频 编码视频 硬件加速解码,这个项目用的是编码,跟解码无关,感兴趣可去官方查看 ![输入图片说明](image9.png) 附上github网址 https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples ### mpp https://github.com/nyanmisaka/ffmpeg-rockchip 编译方法 :https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Compilation 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)