# RK35XX-RTMP **Repository Path**: ukav/rk35xx-rtmp ## Basic Information - **Project Name**: RK35XX-RTMP - **Description**: RK3568 RTMP音视频对讲方案 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-09-16 - **Last Updated**: 2025-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎥 RK3568 RTMP音视频对讲方案集合 基于RK3568平台的多种RTMP音视频对讲技术方案,涵盖从快速开发到极致性能的全部需求。 ## 📋 方案概览 | 方案 | 技术栈 | 延时性能 | 开发难度 | 推荐场景 | |------|--------|----------|----------|----------| | **方案1** | FFmpeg + 硬件加速 | 100-300ms | ⭐⭐⭐ | 通用对讲应用 | | **方案2** | GStreamer + RK插件 | 50-150ms | ⭐⭐⭐⭐ | 专业音视频应用 | | **方案3** | 混合架构 | 80-200ms | ⭐⭐⭐⭐⭐ | 复杂业务场景 | | **方案4** | 原生C++低延时 | 20-80ms | ⭐⭐⭐⭐⭐ | 实时性要求极高 | | **方案5** | WebRTC现代化 | 50-200ms | ⭐⭐ | 互联网应用 | ## 🚀 快速开始 ### 环境要求 - **硬件**: RK3568开发板 - **操作系统**: Ubuntu 20.04+ 或 Buildroot - **编译器**: GCC 9.0+ 或交叉编译工具链 - **依赖库**: 根据选择的方案安装相应依赖 ### 选择适合的方案 #### 🎯 我需要快速实现功能 ```bash cd 方案1-FFmpeg方案 ./scripts/build.sh ./build/rtmp_streamer push rtmp://192.168.1.100/live/stream ``` #### ⚡ 我需要最低延时 ```bash cd 方案4-原生低延时方案 mkdir build && cd build cmake .. make ./rk_mpp_encoder rtmp://192.168.1.100/live/stream ``` #### 🌐 我需要Web界面 ```bash cd 方案5-WebRTC方案 # 编译C++后端 mkdir build && cd build cmake .. make ./webrtc_gateway rtmp://192.168.1.100/live/stream # 打开web/index.html 在浏览器中 ``` #### 🔧 我需要专业音视频处理 ```bash cd 方案2-GStreamer方案 ./scripts/gst_launch_examples.sh # 或使用管道工具 ./build/gst_rtmp_pipeline run rtmp_push_hw rtmp://192.168.1.100/live/stream ``` ## 📁 项目结构 ``` TLU6W_RTMP/ ├── 方案对比.md # 详细方案对比分析 ├── README.md # 项目总览 ├── 方案1-FFmpeg方案/ │ ├── README.md # FFmpeg方案说明 │ ├── src/ # 源代码 │ ├── cmake/ # CMake配置 │ └── scripts/ # 构建脚本 ├── 方案2-GStreamer方案/ │ ├── README.md # GStreamer方案说明 │ ├── src/ # 源代码 │ └── scripts/ # 示例脚本 ├── 方案3-混合方案/ │ ├── README.md # 混合方案说明 │ └── src/ # 源代码 ├── 方案4-原生低延时方案/ │ ├── README.md # 原生C++方案说明 │ └── src/ # 源代码 └── 方案5-WebRTC方案/ ├── README.md # WebRTC方案说明 ├── src/ # C++后端代码 └── web/ # Web前端界面 ``` ## 🔧 详细构建说明 ### 方案1: FFmpeg + 硬件加速 ```bash # 安装依赖 sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libavutil-dev # 编译 cd 方案1-FFmpeg方案 mkdir build && cd build cmake .. make # 运行 ./rtmp_streamer push rtmp://your-server/live/stream ``` ### 方案2: GStreamer + RK插件 ```bash # 安装GStreamer sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-* # 编译 cd 方案2-GStreamer方案 mkdir build && cd build cmake .. make # 运行示例 ../scripts/gst_launch_examples.sh push ``` ### 方案3: 混合方案 ```bash # 需要同时安装FFmpeg和GStreamer依赖 cd 方案3-混合方案 mkdir build && cd build cmake .. make ./hybrid_rtmp_system rtmp://your-server/live/stream ``` ### 方案4: 原生C++低延时 ```bash # 安装RK MPP库 sudo apt-get install librockchip-mpp-dev # 编译 cd 方案4-原生低延时方案 mkdir build && cd build cmake .. make ./rk_mpp_encoder rtmp://your-server/live/stream 1280 720 30 2000000 ``` ### 方案5: WebRTC现代化 ```bash # 安装WebRTC依赖 # 注意:WebRTC库较大,建议使用预编译版本 cd 方案5-WebRTC方案 mkdir build && cd build cmake .. make # 启动后端 ./webrtc_gateway rtmp://your-server/live/stream # 在浏览器中打开 web/index.html ``` ## 🎛️ 配置说明 ### 通用配置参数 - **视频分辨率**: 支持720p、1080p、4K - **视频帧率**: 15/30/60 FPS - **视频码率**: 500kbps - 10Mbps - **音频采样率**: 8kHz - 48kHz - **音频码率**: 64kbps - 320kbps ### RK3568硬件加速配置 ```bash # 确保MPP驱动加载 lsmod | grep mpp # 检查设备节点 ls /dev/mpp* # 检查视频设备 ls /dev/video* ``` ### 网络配置 ```bash # RTMP服务器配置示例 (nginx-rtmp) rtmp { server { listen 1935; application live { live on; record off; } } } ``` ## 📊 性能测试 ### 延时测试方法 ```bash # 使用方案4进行延时测试 cd 方案4-原生低延时方案/build time ./rk_mpp_encoder rtmp://localhost/live/test # 使用GStreamer测试管道延时 gst-launch-1.0 -v videotestsrc ! mpph264enc ! rtmpsink location=rtmp://localhost/live/test ``` ### 性能监控 ```bash # CPU使用率 top -p $(pgrep rtmp_streamer) # 内存使用 free -h cat /proc/meminfo # GPU使用率 (如果支持) cat /sys/class/devfreq/ff8a0000.gpu/load ``` ## 🐛 故障排除 ### 常见问题 #### 1. 硬件编码器不可用 ```bash # 检查MPP驱动 dmesg | grep mpp # 检查设备权限 ls -l /dev/mpp* sudo chmod 666 /dev/mpp* ``` #### 2. 摄像头无法打开 ```bash # 检查V4L2设备 v4l2-ctl --list-devices # 测试摄像头 gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink ``` #### 3. RTMP连接失败 ```bash # 测试网络连接 telnet rtmp-server-ip 1935 # 检查防火墙 sudo ufw status ``` #### 4. 音频采集问题 ```bash # 列出音频设备 arecord -l # 测试音频录制 arecord -D default -f cd test.wav ``` ## 📈 优化建议 ### 系统优化 ```bash # 设置CPU性能模式 echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # 优化网络缓冲区 echo 'net.core.rmem_max = 33554432' | sudo tee -a /etc/sysctl.conf echo 'net.core.wmem_max = 33554432' | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` ### 编译优化 ```bash # 使用优化标志 export CFLAGS="-O3 -march=armv8-a -mtune=cortex-a55" export CXXFLAGS="-O3 -march=armv8-a -mtune=cortex-a55" ``` ## 🤝 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 🆘 支持 - 📧 邮箱: support@ukiot.cn - 📞 技术支持: UKIOT.group ## 🙏 致谢 - [FFmpeg](https://ffmpeg.org/) - 多媒体处理框架 - [GStreamer](https://gstreamer.freedesktop.org/) - 多媒体管道框架 - [Rockchip](https://www.rock-chips.com/) - RK3568硬件平台 - [WebRTC](https://webrtc.org/) - 实时通信技术 --- **选择最适合您需求的方案,开始构建高性能的音视频对讲系统!** 🚀