Magewell SDK 最近增加了几个比较重要的功能支持:H.264 视频压缩、MP4 文件格式输出和视频截图,本文对这些功能接口的使用进行简要介绍。
1、H.264 视频压缩函数调用的基本流程
- 首先检测本地环境是否支持使用 H.264 视频压缩,XIS_IsSupportH264;
- 然后启动视频采集,XIS_StartVideoCapture;
- 创建 H.264 编码器,XIS_CreateH264Encoder;
- 设置 H.264 视频压缩数据回调函数,XIS_SetH264EncoderCallback;
- 连接视频采集设备和 H.264 编码器,XIS_SetVideoCaptureEncoderOutput;
- 连接一旦建立,即开始进行 H.264 编码操作;
- 如果需要中止编码器的运行,需要在 XIS_SetVideoCaptureEncoderOutput 上将编码器指针设为空值,即可断开视频采集设备和 H.264 编码器的连接;
- 然后销毁 H.264 编码器,XIS_DestroyH264Encoder;
- 最后停止视频采集,XIS_StopVideoCapture。
2、H.264 编码器的硬件加速特性
在本地硬件环境允许的情况下,H.264 编码器会启用硬件加速特性,可以大大降低编码时对 CPU 的占用,可以使用 XIS_IsSupportH264HD 检查本地硬件环境是否支持硬件编码。 同时满足以下条件的硬件环境都可以支持硬件加速特性:
- 视频采集设备驱动程序更新到 2012.12.03 (Build 5934) 及其以后版本;
- 使用 Intel Sandy Bridge / Ivy Bridge 架构的 CPU 和 Intel 集成显卡;
- Intel 显卡驱动程序更新到 2012.10.17 (Build 9.17.10.2875) 及其以后版本;
- 操作系统为 Windows 7(如果操作系统为WindowsXP,则只能用软件压缩,不能使用硬件加速)。
如果本地硬件环境不支持硬件编码,但 XIS_IsSupportH264 返回 TRUE,此时调用XIS_CreateH264Encoder 会创建 H.264 软件编码器。
点击下载本地硬件环境检测工具
3、H.264 编码器图像格式和位率控制
目前的 H.264 编码器只支持 NV12 和 I420 两种格式,设置为其它的图像格式,XIS_CreateH264Encoder函数都将返回错误。 H.264 编码器支持以下4个级别的画面质量:
- XI_COMPRESSION_SUPER_LOW,超低级别压缩,生成数据最大,视频效果最佳;
- XI_COMPRESSION_LOW,低级别压缩,生成数据较大,视频效果较佳;
- XI_COMPRESSION_MIDDLE, 中等级别压缩,生成数据较小,视频效果中等;
- XI_COMPRESSION_HIGH,高级别压缩,生成数据最小,视频效果一般;
4、MP4 格式的视频文件相关函数调用流程
- 首先需要创建 H.264 编码器;
- 创建 MP4 文件复合器,XIS_CreateMP4Muxer;
- 添加压缩视频流,XIS_MP4MuxerAddVideoStream;
- 然后就可以在 H.264 编码器的回调函数中向 MP4复合器写入视频数据,XIS_MP4MuxerPutFrame;
- 停止时直接销毁 MP4 复合器,XIS_DestroyMP4Muxer;
5、视频截图
在启动视频采集后,可以调用 XIS_VideoCaptureCreateSnapShot 生成指定路径的 jpg 图片文件,文件存放的目录需要提前创建好,如果已经存在同名文件,则该文件会被重写。
支持上述功能的 SDK 为 2013.01.04 (Build 5971) 及其以后的版本。
参考网站:
- http://www.ffmpeg.org
- http://www.videolan.org/developers/x264.html
- http://www.cnblogs.com/chuncn/archive/2011/02/25/1964548.html
- http://blog.sina.com.cn/s/blog_51396f890100pymn.html