XXXXX学院
专业综合实训报告
项目名称: QCAP音视频采集 系
别: 计算机科学与技术系
专业班级: 学姓
号: 名:
指导教师:
2016年 11 月 20 日
专业综合实训总结报告
1. 项目概述
实现音视频的采集系统,使用创世之星的高清会议摄像头以及MPB710图像采集卡实时获取视频数据,以及获取麦克风的音频数据。
2.项目构思/设计
1、拿到创世之星的摄像头以及MPB710采集卡,这个摄像头是创世之星公司开发的一款高清会议摄像头,可以以获取会议的高清视频数据,由于会议肯定是需要音频的,但是在这个摄像头中并未发现麦克风,所以我们准备先使用USB麦克风,用来获取实时的音频数据。
2、摄像头链接上MPB710采集卡,然后采集卡连接到电脑上进行开发。当然,USB的麦克风也一样连接到USB上即可。
3、此摄像头采集卡最后获取到的视频数据是YUY2格式的视频数据,若使用FFMPEG进行H264编码,由于我们工作的局限性,我们需要将YUY2格式的视频数据转换为YUV420P的视频数据,然后再使用FFMPEG进行H264编码。
4、编码过程中需注意,原YUY2数据的完整性。由于需要做一个转换,所以在转换过后也需要确认转换之后的数据是否与原数据播放出来的画面是一样的,首先保证了转换的成功,后面编码才不会出错,否则,就算成功编码了,播放出来的画面也就不正常了。 5、将编码好的帧写入本地文件,或者存储在内存中,只要保证格式正确即可。
6、使用麦克风获取音频数据,获取到的原始音频数据是PCM格式的音频数据,原始数据非常占内存,若不编码则太耗资源,无论是存储在硬盘上,还是在传输过程中带宽的消耗,都是一个巨大的资源消耗。所以需要编码之后,达到压缩数据的目的。
7、PCM数据编码,可以使用FFMPEG选择AAC编码,编码压缩率在一般在18:1,也有一些资料说是20:1。无论是哪一个,都是一个巨大的资源优化。 8、最后保存视频编码数据H264文件,以及音频编码数据AAC文件。
3. 项目实施
1、由于我们对于创世之星公司的SDK不熟悉,所以我们用了一周的时间来学习SDK中QCAP封装的代码的使用方法,以及各个参数的使用。在这段时间里面我们学习了QCAP的使用流程。
1)、使用QCAP_CREATE建立资源获取装置资源。
2)、选择QCAP_SET_VIDEO_INPUT、QCAP_SET_VIDEO_DEINTERLACE、QCAP_SET_VIDEO_BRIGHTNESS、QCAP_SET_AUDIO_VOLUME设定输入音视频来源装置的属性。
3)、使用QCAP_RUN开始获取音视频数据的获取。
4)、选择QCAP_SNAPSHOT_BMP、QCAP_SNAPSHOT_JPG抓取图像。 5)、选择QCAP_SET_VIDEO_RECORD_PROPERTY、
QCAP_SET_AUDIO_RECORD_PROPERTY、QCAP_START_RECORD进行开始录音。
6)、使用QCAP_STOP_RECORD停止录影。 7)、使用QCAP_STOP停止音视频数据的获取。 8)、使用QCAP_DESTROY移除获取卡装置的资源。
2、安装摄像头采集卡的驱动程序,只有安装了驱动程序才可以正常使用。配置VS2010的项目属性等,安装动态库,配置FFMPEG。 3、测试摄像头、采集卡、麦克风等硬件是否正常。
4、YUV数据格式有两类布局有两类布局:packed和planner,packed的方式是把相邻几个像素打包起来,存储在一个DWORD里面。Planner方式则是将Y分量与UV分量完全分开存储。YUY2是packed方式存储,水平方向两个像素存储在一个DWORD里。并且UV采样率只有Y的一半。
5、摄像头获取到的裸流是YUY2格式数据,也就是水平方向两个像素存储在一个DWORF里面,UV采样率只有Y的一半,使用FFMPEG中SWS_SCALE将YUY2格式的数据安装相应的封装样式转换为YUV420P格式。
6、拿到YUV420P格式的文件之后,就可以使用FFMPEG对这个庞大的数据格式的数据进行编码,其实编码也就是一个压缩的过程。H.264可以提供11个等级、7个类别的子协议格式(算法),其中等级定义是对外部环境进行限定,例如带宽需求、内存需求、网络性能等等。等级越高,带宽要求就越高,视频质量也越高。类别定义则是针对特定应用,定义编码器所使用的特性子集,并规范不同应用环境中的编码器复杂程度。H.264与其他编码技术相比,在同等质量下,采用H.264技术压缩后的数据只有MPEG2的八分之一,MPEG4的三分之一。所以H.264在视频压缩编码上是相当不错的一个选择。现在已成为主流。
7、使用USB麦克风获取会议的音频数据,麦克风获取到的原始音频数据是PCM数据,PCM数据如YUV数据一样,非常占用内存以及带宽,所以一样的需要使用音频的编码技术对PCM数据进行编码,才能达到节约资源的目的。 8、音频数据编码,使用AAC(Advanced Audio Coding)技术,此技术是基于MPEG-2的音频编码技术。
9、汇总音视频的获取以及编码等相关内容,完成此项目的功能。 10、做总结,完成相关文档的书写。
4. 结论
通过这两个月的时间,我们完成了音视频采集系统,此系统需要使用摄像头获取实时的视频数据,使用麦克风获取实时的音频数据,由于无论是音频还是视频数据的原始数据都非常占用内存,磁盘空间使用大,不方便读取,存放。并且传输也需要相当大的带宽,为解决这个问题,我们使用对应的编码技术,对音视频文件都进行了编码,编码之后文件比之前的文件小了非常多。在存储、读取、传输等各个使用的资源消耗都减小了太多。
这项目过程中,我逐步对每个模块进行编码设计,完成每个功能。要求在每个阶段结束之前通过人工检查,完善每个模块的功能,尽早发现错误并纠正,完成每个模块测试之后再进行系统测试。
这次项目的经历也让我得到了成长,在这个过程中,我学习到了非常的多东西,而且都是课本上学习不到的。其实在过程里面,我也感受到了,以后再做项目的过程中,肯定会遇到很多不会,不懂的地方,这个时候需要自己静下心来,一点一点的去学习不懂的地方,现在网络资源丰富,可以去网上搜索资料学习。 在这个项目中我也遇到各种问题,指针使用问题,以及内存管理不当,造成了很多棘手的问题,最后都是在黄老师的指导下得以修改,解决这些问题。感谢黄老师的帮助。
指导教师 评阅意见 成 绩 指导教师签字 评 阅 日 期