0 背景
硬解码就是利用硬件芯片来解码的,TX2 有单独的解码模块,NVDEC。软解码是用软件程序来解码,比较占用 CPU 资源。截止当前,nvidia 的硬件编码官方提供了 nvenc 的方法,且在 ffmpeg 中已经增加了对 nvenc 的编码库。对于硬件解码,官方提供了基于 cuda 的解码方法,但是 ffmpeg中还没有相应的解码库。
首先,要先讨论下为什么需要在 OpenCV 上用上 Gstreamer, 比如我直接一个摄像头 v4l2 图像传给 OpenCV 不行吗?
Gstreamer 是嵌入式平台处理 Media 的首选组件, 像 Nvdia/TI/NXP/Rockchip 平台, 都是使用Gstreamer 来整合 Media 应用. 在Rockchip平台上, 我们已经有为 Gstreamer 开发了像Decode/Encode/ISP-Camera/2D 加速器 /DRM-Display-sink 这些的Plugin。所以 OpenCV 如果链接上 Gstreamer,输入源就不仅仅是摄像头, 还可以是RTSP/本地视频;输出显示的代码可以不用写, 让 Gstreamer 来显示; 转换格式让 Gstreamer 来转, 利用硬件加速; 处理的图像送回Gstreamer 编码。
本文转载自JK Jung的帖子,在本贴中,贴主分享了如何使用 python 代码及 OpenCV 在 Jetson TX2 上抓取和显示摄像头视频,包括 IP 摄像头, USB 网络摄像头和 Jetson 板载摄像头,这个简单代码也同样可以在其它 Jetson 设备上运行。
1 准备条件
- 需要在 Jetson TX