【Linux】RK3588编译安装 GStreamer 支持的 opencv-python

 一、背景

    之前使用 opencv-python 录制摄像头视频一直存在一个问题,录出的视频文件体积太大,主要问题在于没法控制码率,录制工业相机1小时视频,体积最大能到10G+,码率飙到 20000kbps+,实在恐怖。当时搜遍全网也没找到解决方法,最常见的在 cv2.VideoCapture() 中设置 bitrate 参数也是行不通。

    opencv 的 cv2.VideoWriter() 并没有直接提供参数来设置视频的码率。码率通常是编解码器的属性,而 cv2.VideoWriter() 的设计比较简单,没有暴露这些细节。但可以通过指定合适的编解码器和调整视频的分辨率和帧率来间接影响视频的码率。如果需要更细粒度的控制,建议使用更专业的视频处理库,比如将 GStreamer 管道与 OpenCV 结合,这样可以设置视频的更多属性,包括码率。GStreamer 跟 ffmpeg 一样,也是一个多媒体框架,可以实现采集,编码,解码,渲染,滤镜等媒体解决方案,且支持跨平台实现。

    无奈 opencv 默认关闭了 GStreamer 功能,当时也就没再深究,虽然视频体积大但也就凑合用了。直到最近,趁着手头工作不多,决定抽出一部分时间好好搞一下 opencv,通过源码编译的方式开启 GStreamer 支持,尝试使用 GStreamer 的方式录制视频,设置码率。本文先着重介绍一下如何开启 opencv 的 GStreamer 支持。

二、编译安装

2.1 准备工作

本部分主要参考 [1]

2.1.1 工具

gcc、x264xvidcorezlibffmpeg、opencv

2.1.2 工作目录

将所有工具解压到同一个目录下

同时新建一个文件夹用于存放后面编译好的文件 

mkdir {builddir}

2.1.3 安装插件

sudo apt install make cmake cmake-gui pkg-config

2.1.4 创建虚拟环境

    可以安装 anaconda 创建虚拟环境,或使用系统 python 创建(具体方法可参考上篇文章),由于本人要在原有 conda 虚拟环境中使用 opencv ,所以就直接使用原有 conda 环境。

2.2 编译组件

2.2.1 配置 gcc

sudo vi /etc/profile
export PATH=$PATH:/path/to/your/gcc/bin
source /etc/profile

配置完成后输入

aarch64-linux-gnu-gcc -v

 输出如下内容表示配置成功

2.2.2 编译 zlib

(1)进入目录,进行编译配置

cd /path/to/your/zlib/dir
./configure --prefix=/path/to/your/{builddir}

(2)修改编译文件

vi Makefile

 (3)修改内容

CC=aarch64-linux-gnu-gcc
LDSHARED=aarch64-linux-gnu-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
AR=aarch64-linux-gnu-ar
RANLIB=aarch64-linux-gnu-ranlib

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值