- 视频开发
- support 4xH.264 4xH.265 1920x1080 rtsp stream hardware decoder
- copy/delelte item to add/remove streams
- codec 0: H.264,
- 1: H.265
- record 0: decode only
- 1: decode resize to 640x360 BGR and record sample frame in ./data/
- Note the file size is about 659KB/frame, DO NOT save too long or too many stream or too frequenctly
- frequency N [1-25] default 5, save 1 frame every N frame, only valid when issave = 1
- Sample2 播放MP4文件,通过HDMI输出显示
视频开发
EAIS-750E包含强大的硬件编解码器,支持H.264 4Kx2K@30fps和H.265 4Kx2K@60fps解码能力,实测支持
H.264 4路1920x1080@30fps 或 6路 1280x720@30fps 或 4路 2560x1440@20fps
H.264 4路1920x1080@30fps + H.265 4路1920x1080@30fps 同时解码
H.265 8路1920x1080@30fps
芯片上包含图形处理加速器GE2D,支持Crop,resize,rotation,水印等常见CV算子操作,支持JPEG图片硬件解码与编码。下面通过Sample代码来举例具体使用
Sample1 RTSP视频流硬解码+resize
该例子借助ffmpeg的视频流协议功能,调用芯片的vdec硬解码器和GE2D图形硬件加速器实现功能。
应用支持输入1-8路H.264/H.265RTSP视频流地址,显示视频流帧率,保存视频缩略图。
下载decode_example代码解压放到/home/ubuntu/ 路径下 下载链接 密码750e。
确认视频流输入
确认摄像头的RTSP推流服务地址,分辨率和编码格式是H264还是H265,并通过VLC确认视频流可访问。
配置视频流输入
修改stream.cfg文件,输入视频流地址,编码格式,以及设置是否保存缩略图$ cd sample_decode
$ vi stream.cfg
support 4xH.264 4xH.265 1920x1080 rtsp stream hardware decoder
copy/delelte item to add/remove streams
codec 0: H.264,
1: H.265
record 0: decode only
1: decode resize to 640x360 BGR and record sample frame in ./data/
Note the file size is about 659KB/frame, DO NOT save too long or too many stream or too frequenctly
frequency N [1-25] default 5, save 1 frame every N frame, only valid when issave = 1
IPC : { ipc1:{rtsp = “rtsp://admin:oalb2018@192.168.3.64:554/h264/ch0/main/av_stream”; codec = 0; record = 0; frequency = 5; }; ipc2:{rtsp = “rtsp://admin:oalb2018@192.168.3.64:554/h264/ch0/main/av_stream”; codec = 0; record = 0; frequency = 5; }; ipc3:{rtsp = “rtsp://admin:oalb2018@192.168.3.64:554/h264/ch0/main/av_stream”; codec = 0; record = 0; frequency = 5; }; ipc4:{rtsp = “rtsp://admin:oalb2018@192.168.3.64:554/h264/ch0/main/av_stream”; codec = 0; record = 0; frequency = 5; }; };
有几路视频流就写几个ipc描述,支持H.264/H.265同时解码工作,修改完成后保存退出。
执行应用
直接运行run.sh启动命令。由于调用硬件解码器需要root权限,因此需要按提示输入sudo密码。$ ./run.sh
一开始会输出一大堆warning,因为拉流建立连接需要时间,解码器没有获得正确数据而报警。当看到 init n succ code is h264/265信息时表示IPCn成功建立连接。
default INFO src/RtspMediaSource.cpp:70 Init 1 init succ code is h264
当所有视频流都建立连接后,程序会自动统计并输出平均帧率,表示解码成功。
4320 1162.038766 default INFO src/main.cpp:69 main str1@27fps, str2@26fps, str3@30fps, str4@30fps 4320 1163.039011 default INFO src/main.cpp:69 main str1@26fps, str2@26fps, str3@29fps, str4@29fps 4320 1164.039297 default INFO src/main.cpp:69 main str1@26fps, str2@26fps, str3@29fps, str4@29fps 4320 1165.039522 default INFO src/main.cpp:69 main str1@26fps, str2@26fps, str3@28fps, str4@28fps 4320 1166.039737 default INFO src/main.cpp:69 main str1@26fps, str2@26fps, str3@28fps, str4@28fps
开新控制终端用htop或top命令看CPU占用率,发现占用率低于10%。
需要退出解码应用时使用Ctrl+C强行结束进程。
保存视频缩略图并查看
配置stream.cfg文件,修改第一路视频流record=1,启用视频缩略图保存功能。frequency = 表示每5帧保存一帧,该参数为了存储/计算频率,变相减少存储空间和计算量。
ipc1:{rtsp = "rtsp://admin:oalb2018@192.168.3.64:554/h264/ch0/main/av_stream";
codec = 0; record = 1; frequency = 5;
};
注:应用支持所有视频流都保存,但考虑到视频保存文件非常大,建议路数不要开太多,时间不要持续太久,采样率设低一些。
保存后退出,执行程序,大约10-30s后Ctrl+C强制结束进程。$ ./run.sh
在./data路径下会有stream1.BGR文件。该文件是5帧取1帧保存的视频缩略图,分辨率640x360,图片格式为BGR裸数据,可以复制到上位机借助小工具vooya(下载密码750e)查看。
基于缩略小图进一步做AI应用开发
虽然例子中缩略图是保存在磁盘上的,但只需要设置保存在内存里,就可以传递给Tengine等AI推理应用进一步AI开发应用。
Sample代码中以注释代码形式保留了保存1080P YUV原图的代码,以方便获取原图做其他应用。
Sample2 播放MP4文件,通过HDMI输出显示
未完待续