音视频 Linux 指令速查表
核心特点 :均基于瑞芯微 MPP(Media Process Platform) 硬件编解码框架,支持H.264/H.265硬编硬解、RGA 2D图形加速。RV1126 是低功耗IPC芯片,RK3568 是通用嵌入式芯片,指令90%通用,差异处已标注。
一、MPP 官方工具指令(必学,最稳定的硬编硬解)
瑞芯微官方提供的媒体处理工具,比FFmpeg更稳定、性能更好,是开发首选。
1. 基础测试指令
bash
# 查看MPP版本和支持的编解码器
mpp_info
# 测试H.264硬解码(输出到屏幕)
mpp_dec_test -i test.h264 -t h264 -f 0
# 测试H.265硬解码
mpp_dec_test -i test.h265 -t h265 -f 0
# 测试H.264硬编码(生成test.h264)
mpp_enc_test -w 1920 -h 1080 -t h264 -o test.h264
# 测试H.265硬编码
mpp_enc_test -w 1920 -h 1080 -t h265 -o test.h265
2. 摄像头直接硬编码(最常用)
bash
# 从/dev/video0采集YUYV格式,硬编码为H.264保存
v4l2_capture -d /dev/video0 -w 1920 -h 1080 -f YUYV -r 30 | mpp_enc_test -w 1920 -h 1080 -t h264 -i - -o output.h264
# RV1126 低功耗模式(推荐)
v4l2_capture -d /dev/video0 -w 1280 -h 720 -f NV12 -r 25 | mpp_enc_test -w 1280 -h 720 -t h264 -b 1000000 -i - -o output.h264
3. 多路编码(RK3568支持,RV1126最多2路)
bash
# RK3568 同时编码1080P和720P两路
mpp_enc_test -w 1920 -h 1080 -t h264 -o main.h264 &
mpp_enc_test -w 1280 -h 720 -t h264 -o sub.h264 &
二、FFmpeg 硬件加速指令(瑞芯微专属)
注意:必须使用瑞芯微官方编译的FFmpeg,否则没有rkmpp编码器。
1. 编码器名称对照表
| 芯片 | H.264编码器 | H.265编码器 | 解码器 |
|---|---|---|---|
| RK3568 | h264_rkmpp | h265_rkmpp | h264_rkmpp, h265_rkmpp |
| RV1126 | h264_rkmpp | h265_rkmpp | h264_rkmpp, h265_rkmpp |
2. 常用示例
bash
# 摄像头录制(硬编码,性能最好)
ffmpeg -f v4l2 -i /dev/video0 -c:v h264_rkmpp -b:v 2M output.mp4
# 硬解码播放
ffplay -c:v h264_rkmpp test.mp4
# 转码(硬解+硬编,速度比软编快10倍以上)
ffmpeg -c:v h264_rkmpp -i input.mp4 -c:v h265_rkmpp -b:v 1M output.mp4
# RTSP推流(硬编码,低延迟)
ffmpeg -f v4l2 -i /dev/video0 -c:v h264_rkmpp -b:v 2M -f rtsp rtsp://192.168.1.100:8554/stream
# 拉流保存(硬解码)
ffmpeg -c:v h264_rkmpp -i rtsp://192.168.1.100:8554/stream -c copy save.mp4
# RV1126 优化参数(降低CPU占用)
ffmpeg -f v4l2 -i /dev/video0 -pix_fmt nv12 -c:v h264_rkmpp -b:v 1M -r 25 -g 50 output.mp4
三、GStreamer 硬件加速指令
bash
# 摄像头预览(硬解码)
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=1920,height=1080 ! rkximagesink
# 摄像头录制(硬编码)
gst-launch-1.0 v4l2src ! video/x-raw,format=NV12,width=1920,height=1080 ! mpph264enc ! h264parse ! mp4mux ! filesink location=output.mp4
# 播放本地视频(硬解码)
gst-launch-1.0 filesrc location=test.mp4 ! qtdemux ! h264parse ! mppvideodec ! rkximagesink
# RTSP推流(硬编码)
gst-launch-1.0 v4l2src ! video/x-raw,format=NV12,width=1280,height=720 ! mpph264enc ! rtph264pay ! udpsink host=192.168.1.100 port=5004
四、RGA 2D图形加速指令
RGA是瑞芯微的硬件2D加速模块,用于图像缩放、格式转换、旋转等,不占用CPU。
bash
# 安装RGA工具
apt install librga-dev rga-tools
# 图像格式转换(YUYV转NV12)
rga_convert -i input.yuyv -o output.nv12 -w 1920 -h 1080 -f YUYV -F NV12
# 图像缩放(1920x1080转640x480)
rga_convert -i input.nv12 -o output.nv12 -w 1920 -h 1080 -W 640 -H 480 -f NV12
# 图像旋转(90度)
rga_convert -i input.nv12 -o output.nv12 -w 1920 -h 1080 -f NV12 -r 90
# 叠加水印
rga_blend -i background.nv12 -w 1920 -h 1080 -I logo.rgba -x 100 -y 100 -o output.nv12
五、摄像头调试专属指令
1. MIPI摄像头调试(RV1126/RK3568核心)
bash
# 查看所有媒体设备(MIPI摄像头会显示为/media/mediaX)
media-ctl -p
# 查看摄像头拓扑结构
media-ctl -d /dev/media0 --print-dot
# 设置摄像头链路(MIPI摄像头必须先设置链路才能使用)
media-ctl -d /dev/media0 -l '"ov5695 2-0036":0->"rockchip-mipi-csi2":0[1]'
# 查看摄像头支持的格式
v4l2-ctl -d /dev/video0 --list-formats-ext
# 测试摄像头采集(保存原始数据)
v4l2_capture -d /dev/video0 -w 1920 -h 1080 -f NV12 -n 10 -o capture.nv12
2. 常见摄像头问题排查
bash
# 查看摄像头驱动加载情况
dmesg | grep -E "ov5695|gc2053|imx335|mipi"
# 查看I2C设备(摄像头I2C地址通常是0x36或0x3c)
i2cdetect -y 2
# 重启摄像头子系统
rmmod ov5695
modprobe ov5695
六、性能监控与调试指令
1. 瑞芯微专属性能工具
bash
# 查看CPU温度和频率
cat /sys/class/thermal/thermal_zone0/temp
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
# 查看GPU负载
cat /sys/class/devfreq/ff9a0000.gpu/load
# 查看MPP硬件占用
cat /proc/mpp/status
# 查看RGA硬件占用
cat /proc/rga/status
2. 系统性能监控
bash
# 实时查看所有硬件负载
htop
# 查看内存使用(音视频应用容易内存泄漏)
free -h
# 查看磁盘IO(录制视频时重要)
iostat -x 1
# 查看网络带宽(推流时重要)
iftop -i eth0
七、常见问题排查指令
bash
# 问题1:摄像头打不开
ls /dev/video* # 查看设备是否存在
lsmod | grep v4l2 # 查看驱动是否加载
dmesg | grep video # 查看内核日志
chmod 666 /dev/video0 # 检查权限
usermod -aG video root # 将用户加入video组
# 问题2:硬编码失败
mpp_info # 查看MPP是否正常
lsmod | grep mpp # 查看MPP驱动是否加载
dmesg | grep mpp # 查看MPP日志
# 问题3:推流卡顿
top # 查看CPU占用
iftop # 查看网络带宽
ffmpeg -i ... -b:v 1M ... # 降低码率
ffmpeg -i ... -r 25 ... # 降低帧率
# 问题4:RV1126发热严重
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # 开启省电模式
ffmpeg -i ... -b:v 500k ... # 降低码率
ffmpeg -i ... -r 15 ... # 降低帧率