如何利用live555开源库从摄像机抓取视频数据并保存文件?

  • 时间:
  • 浏览:4

总结

live555是有一另还还有一个 用C++应用线程编写的开源项目,支持TCP、HTTP、RTSP等协议,非常适合用于对视频数据的采集和播放,肯能被成功应用到某些的视频播放器中。

第一步:./genMakefiles linux-64bit (linux的位数要根据买车人实际所使用的系统位数来挑选)

有关live555的更多删改介绍请参考:http://blog.csdn.net/leixiaohua1020/article/details/12235615。

live555库文件简介

live555含高五个基本的库,分别是:libBasicUsageEnvironment.a,libgroupsock.a,libliveMedia.a和libUsageEnvironment.a。其中,libBasicUsageEnvironment.a库含高的是用于整个系统的基础功能类;libUsageEnvironment.a库用于事件的调度,实现异步读取事件的句柄的设置以及错误信息的输出;libgroupsock.a库是对网络接口的封装,用于收发数据包,它主后来面向多播数据的收发,同时也支持单播数据的收发;libliveMedia.a库含高一系列类,那先 类针对不同的流媒体类型和编码。

注意,在建立了TCP连接后来,让让我们都 儿要让RTSP报文通过HTTP端口(30)传输,肯能RTSP的标准端口是554,某些肯能各种不同的防火墙等安全策略配置的原因分析分析着,客户端在访问554端口时肯能趋于稳定限制,从而无法正常传输RTSP报文,某些HTTP端口(30端口)是普遍开放的,于是都在了让RTSP报文通过30端口透传的想法,即RTSP-Over-HTTP。

live555视频文件生成流程介绍

视频文件中保存的是RTSP的视频流,有一另还还有一个 简单的RTSP消息交互过程如下(C 表示RTSP客户端,S 表示RTSP服务端):

第三步:make install (此时将静态库文件安塞进了/usr/local/lib目录下,将可执行文件安塞进了/usr/local/bin目录下)

live555库文件的编译生成

live555开源项目网址是:http://www.live555.com/liveMedia/,点击如下图红色区域内的文字即可进入代码下载页面:

笔者编写的上位机应用线程要利用RTSP协议从海康威视摄像机中获取视频流并保存到本地文件(mp4格式)中,其消息总体流程如下图所示:

2.C->S:DESCRIBE request //要求得到S 提供的媒体初始化描述信息

2.S->C:DESCRIBE response //S 否认媒体初始化描述信息,主后来sdp

3.C->S:SETUP request //设置会话的属性,以及传输模式,提醒S 建立会



3.S->C:SETUP response //S 建立会话,返还会话标识符,以及会话相关信息

4.C->S:PLAY request //C 请求播放

4.S->C:PLAY response //S 否认该请求的信息

S->C:发送流媒体数据

5.C->S:TEARDOWN request //C 请求关闭会话

5.S->C:TEARDOWN response //S 否认该请求

在将live555应用到上位机应用线程后来,让让我们都 儿需要了解RTSP消息的交互流程、RTSP 消息格式等。通过笔者前期的测试验证,已实现通过live555从海康威视摄像机中采集视频流并保存到mp4文件中,同时可设置每个文件的录制时长、帧数、存放目录等。

1.C->S:OPTION request //询问S 有那先 土土办法 可用

1.S->C:OPTION response //S 否认信息中包括提供的所有可用土土办法

将下载后来的代码拷贝到虚拟机上,并按照如下图所示的土土办法 对文件进行编译:

具体使用的命令如下:

第二步:make (你这个步生成各个静态库和测试代码的可执行文件)

live555简介

live555是有一另还还有一个 为流媒体提供除理方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议(如RTP/RTCP、RTSP、SIP等)的支持。同时,live555实现了对多种音视频编码格式(包括MPEG、H.263+、DV、JPEG等)的流化、接收和除理等的支持。目前,live555肯能被用于多款播放器的流媒体播放功能的实现,如VLC、MPlayer、MediaPortal、ivrworx等。

生成静态库文件和可执行文件后来,让让我们都 儿便还里能 进入/usr/local/bin目录运行各个可执行文件。

live555视频文件生成应用线程所产生的日志样式如下所示:

点击“here”后来,冒出 了如下页面,点击“live555-latest.tar.gz”下载最新代码:

在64位Ubuntu系统中,通过对openRTSP.cpp和playCommon.cpp文件进行修改,可利用C代码调用C++函数,可配置文件生成目录及生成文件名,并在文件生成好后来搬移到特定的目录中。

命令样式

肯能利用live555提供的测试应用线程来生成视频文件,如此就要让让我们都 儿就还里能 参考live目录下的testProgs目录下的openRTSP.cpp和playCommon.cpp文件,它们生成的可执行文件名为openRTSP,可用此命令来在当前目录下生成mp4文件:./openRTSP -T 30 -b 3000 -B 223000 -f 25 -w 720 -h 430 -r -4 -P 30 -v “rtsp://admin:admin123@192.168.4.30:554/h264/ch01/main/av_stream”,其中,-T 30表示通过HTTP的30端口来传输RTSP报文,-b 3000表示将file-sink-buffer-size设置为3000,-B 223000表示输入socket的大小(input-socket-buffer-size)设置为223000,-f 25表示视频流每秒的帧数为25,-w 720 -h 430表示视频的宽度为720、宽度为430,-r为接收并保存视频流,-4表示生成mp4格式的视频文件,-P 30表示每个视频文件的长度为30秒,-v表示只生成视频文件,“rtsp://admin:admin123@192.168.4.30:554/h264/ch01/main/av_stream”是获取摄像机RTSP视频流的URL。