- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
摘要:在LINUX下实现对音频和视频的采集,并编写Socket程序将采集到的音频文件在两台主机的进程之间进行传输。
关键字:LINUX 音频、视频 采集 Socket传输
项目简介
本项目将分成三部分来分别实现,分别为Linux下视频的采集、Linux下音频的采集、Linux下Socket传输的实现。下面将分别介绍各部分具体的实现过程。
Linux下视频采集
1、背景介绍
V4L,其全称是Video4Linux(VideoforLinux),是在linux内核中关于视频设备的API接口,涉及开关视频设备、采集并处理视频图像信息。V4L从2.1.x版本的内核中开始出现。
现在出现Video4Linux2(VideoforLinuxTwo),简称V4L2。很显然,他是V4L的改进版,修复了第一代的部分设计bug。从2.5.x开始,V4L2就被集成到内核里面去了。尽管如此,还是有一部分设备的驱动不支持新版本的V4L2,所以,有时候我们会看到V4L跟V4L2同时出现在代码里面。
Linux系统中,视频设备被当作一个设备文件来看待,设备文件存放在/dev目录下,完整路径的设备文件名为:/dev/video0.
2、视频采集基本步骤
视频采集基本步骤流程:打开设备-检查和设置设备属性-设置帧格式-设置一种输入输出方法(缓冲区管理)-循环获取数据-关闭设备。
其中打开视频设备非常简单,在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备,打开这个设备有两种模式即阻塞模式和非阻塞模式。主要实现代码为:
eq\o\ac(○,1)用非阻塞模式打开摄像头设备代码为
intcameraFd;
cameraFd=open(/dev/video0,O_RDWR|O_NONBLOCK);
eq\o\ac(○,2)用阻塞模式打开摄像头设备,上述代码变为:
cameraFd=open(/dev/video0,O_RDWR);
应用程序能够使用阻塞模式或非阻塞模式打开视频设备,如果使用非阻塞模式调用视频设备,即使尚未捕获到信息,驱动依旧会把缓存(DQBUFF)里的东西返回给应用程序。
3、Linux视频设备驱动常用控制命令使用说明
设置视频设备属性通过ioctl来进行设置,ioctl有三个参数,分别是fd,cmd,和parameter,表示设备描述符,控制命令和控制命令参数。
Linux视频设备驱动接口V4L2支持的常用控制命令如下:
eq\o\ac(○,1)控制命令VIDIOC_ENUM_FMT
功能:获取当前视频设备支持的视频格式。
参数说明:参数类型为V4L2的视频格式描述符类型structv4l2_fmtdesc
返回值说明:执行成功时,函数返回值为0;structv4l2_fmtdesc结构体中的.pixelformat和.description成员返回当前视频设备所支持的视频格式;
使用举例:
structv4l2_fmtdescfmt;
memset(fmt,0,sizeof(fmt));
fmt.index=0;
fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;
while((ret=ioctl(dev,VIDIOC_ENUM_FMT,fmt))==0){
fmt.index++;
printf({pixelformat=%c%c%c%c,description=%s}\n,
fmt.pixelformat0xFF,(fmt.pixelformat8)0xFF,
(fmt.pixelformat16)0xFF,(fmt.pixelformat24)0xFF,
fmt.description);
}
eq\o\ac(○,2)控制命令VIDIOC_QUERYCAP
功能:查询视频设备的功能;
参数说明:参数类型为V4L2的能力描述类型structv4l2_capability;
返回值说明:执行成功时,函数返回值为0;函数执行成功后,structv4l2_capability结构体变量中的返回当前视频设备所支持的功能;例如支持视频捕获功能V4L2_CAP_VIDEO_CAPTURE、V4L2_CAP_STR
文档评论(0)