一、OpenCV中的硬编码
OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下。
深入阅读cv::gpu::VideoWriter_GPU类的实现,发现其底层编码实现是基于NVCUVENC库,视频文件的封装是FFmpeg。 二、NVCUVENC库 NVCUVENC库是NVIDIA公司提供的视频编码库,可以实现H.264的GPU编码,接收原始YUV frames数据,编码产生NAL packets。 利用NVCUVENC库进行视频硬编码的基本步骤如下: 1.检测是否支持NVCUVENC 2.新建编码器,设置编码类型 3.设置编码参数,注册回调函数 4.创建编码器相关资源 5.循环编码每帧数据 6.删除编码器,释放资源 伪代码示意图如下所示,其中编码前缓冲区的分配,以及编码后的数据处理都由回调函数。 回调函数说明: AcquireBitstream() 分配coded bitstream缓冲区 ReleaseBitstream() 处理、保存coded bitstream OnBeginFrame() 编码前的初始化工作
OnEndFrame() 编码后的统计工作
回调函数的调用顺序: ![]() |
文章转载自:罗索实验室 [] 本文出处:博客园 作者:dwdxdy 原文 |