# v4l2_cam-rtsp **Repository Path**: lozenyin/v4l2_cam-rtsp ## Basic Information - **Project Name**: v4l2_cam-rtsp - **Description**: 基于ROC-RK3588s-PC开发板,使用v4l2框架和live555流媒体服务器框架搭建的网络RTSP摄像头程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2023-11-20 - **Last Updated**: 2025-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于瑞芯微硬件编解码的网络摄像头 ## 项目简介 基于ROC-RK3588s-PC开发板,使用v4l2框架和live555流媒体服务器框架搭建的网络RTSP摄像头程序 ## 代码工程 ```bash . ├── build │ └── v4l2_rtsp ├── CMakeLists.txt ├── demo │ ├── demo-001.cpp │ ├── live555_demo.cpp │ ├── live555_rtsp_server.cpp │ └── v4l2_mpp_live555.cpp ├── main.cpp ├── model │ ├── V4L2CameraRtsp.cpp │ └── V4L2CameraRtsp.h ├── readme.md └── tools ├── live └── live555-latest.tar.gz ``` ## 程序设想与参考 主要的目的是该程序启动后,可以生成一个rtsp视频流输出。 ### 初期的设想:V4L2CameraRtsp类包揽一切 用来做可行性的 ```bash class V4L2CameraRtsp init() ...... ``` ### 模块化设计:一个类只做一份工作 v4l2库负责获取摄像头的图像,mpp库负责紧挨能获取的图像编码成h264格式,live555库将其推流成rtsp流。设计三个类,v4l2摄像头类、mpp编码类、live555封装推流类。 > (需要安装Markdown Preview Mermaid Support插件) ```mermaid graph LR; v4l2摄像头类\n获取图像-->|AAA|mpp编码类\n图像编码成h264; mpp编码类\n图像编码成h264-->|BBB|管道文件; 管道文件-->|CCC|live555封装推流类\n封装成rtsp流; ``` ```mermaid graph LR; V4L2Camera-->|AAA|Rockchip_MPPenc; Rockchip_MPPenc-->|BBB|管道文件; 管道文件-->|CCC|H264Rtsp; ``` ### 对象的设计: ```C++ class V4L2Camera void init_camera(); //初始化摄像头 cv::Mat get_frame_cv(); //返回Mat对象 char* get_frame_data(); //返回图像的buf的指针 class Rockchip_MPPenc void init_mppenc(); //初始化编码器 void deinit_mppenc(); //重新初始化编码器 void encode(); //解码 class H264Rtsp void init_h264(); //rtsp流的相关参数的设定 ``` ### 第三种方法: > [rockit](https://github.com/Caesar-github/rockit) 瑞芯微多媒体库 ```bash git clone https://ghproxy.com/https://github.com/Caesar-github/rockit.git git clone git clone --depth=1 https://hub.fastgit.xyz/Caesar-github/rockit.git ``` [API文档](tools/rockit/mpi/doc/Rockchip_Developer_Guide_MPI.pdf) --- --- 参考的资料有: 1. [使用live555 直播来自v4l2的摄像头数据](https://blog.csdn.net/li_wen01/article/details/59523963) 2. [rockchip多媒体处理概览](https://kernel-zhang.github.io/posts/mpp-overview/#:~:text=mpp%E6%98%AFRockchip%20SoC%E8%B7%A8%E5%B9%B3%E5%8F%B0%E5%AA%92%E4%BD%93%E5%A4%84%E7%90%86%E7%9A%84%E4%B8%AD%E9%97%B4%E4%BB%B6%E5%BA%93%E3%80%82,mpp%E7%9A%84%E4%B8%BB%E8%A6%81%E7%9B%AE%E7%9A%84%E6%98%AF%E4%B8%BA%E5%A4%9A%E5%AA%92%E4%BD%93%EF%BC%88%E4%B8%BB%E8%A6%81%E6%98%AF%E8%A7%86%E9%A2%91%E5%92%8C%E5%9B%BE%E5%83%8F%EF%BC%89%E5%A4%84%E7%90%86%E6%8F%90%E4%BE%9B%E9%AB%98%E6%80%A7%E8%83%BD%E3%80%81%E9%AB%98%E7%81%B5%E6%B4%BB%E6%80%A7%E5%92%8C%E5%8F%AF%E6%89%A9%E5%B1%95%E6%80%A7%E3%80%82%20mpp%20%E7%9A%84%E8%AE%BE%E8%AE%A1%E7%9B%AE%E6%A0%87%E6%98%AF%E8%BF%9E%E6%8E%A5%E4%B8%8D%E5%90%8C%E7%9A%84Rockchip%E7%A1%AC%E4%BB%B6%E5%86%85%E6%A0%B8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82) 3. [嵌入式-v4l2摄像头的工作流程及ioctl功能详解](https://blog.csdn.net/mf_happying/article/details/79472009) 4. [v4l2摄像头采集流程及应用程序](https://blog.csdn.net/q2519008/article/details/123541928) ## V4L2-ctl工具的使用 列出所有设备 ```bash v4l2-ctl --list-devices ``` 获取设备所有信息 ```bash v4l2-ctl --all --device 设备号 ``` ## 部署 ### 安装基本环境 ```bash apt install libssl-dev ``` ### 部署 ```bash git clone https://gitee.com/lozenyin/v4l2_cam-rtsp.git git submodule update --recursive --remote ``` ## 进度 2023年11月21日:v4l2获取图像失败,报【VIDIOC_DQBUF failed (-1)】错误