live555库本身实现了做rtsp服务器,客户端可以通过rtsp客户端访问服务器上的文件并播放,支持的文件格式如下:
本次任务实现了把live555移植到嵌入式海思芯片hi3516上做rtsp服务器,除了支持客户端播放服务器上上面格式文件外,另添加了实时播放hi3516摄像头图像与音频的功能。
live555源码目录如下:
四个基本的库分别是:BasicUsageEnvironment, groupsock, liveMedia和UsageEnvironment。
编译后即生成这4个库文件:
这里我只简单说下liveMedia库的功能,其他三个库是live555运行的基础库,太(mei)简(yan)单(jiu),就不说了。
liveMedia库包含了音视频相关的所有功能,包含音视频文件的解析,RTP传输封装等,我们可以看到这个目录下有对h264、AAC等文件解析的支持:
交叉编译过程:略
这里我主要是修改mediaServer文件夹下的示例程序,添加实时预览摄像头图像与mic声音功能。
hi3516芯片,视频编码格式为h264,音频编码格式为AAC。
1.添加音频AAC支持
添加类 ADTSAudioLiveSource ,继承自FramedSource
在该类的doGetNextFrame函数里实现获取hi3516音频数据做为rtsp服务器音频源。
注意点:
1.1 adts默认是带7字节或者9字节的头,传给rtsp的时候是要去掉头的,实际上RTSP通过rtp传输AAC帧的时候是不带adts头的,而是带4个字节的mpeg4-generic头。
1.2 从FramedSource继承而来的变量
每次doGetNextFrame帧时,从FIFO里取一个完整的AAC帧,把帧拷贝到fTo buf里面,然后比较帧大小与fMaxSize来赋值几个关键的变量:
注意,不管帧长是否大于fMaxSize,每次都需要把完整的帧拷贝到fTo指针,live555内部会根据fNumTruncatedBytes等变量自行处理分包。
1.3 doGetNextFrame函数最后不管有没有取到帧,都需要执行FramedSource::afterGetting
1.4 采样率,通道数,configstr等的计算
这几个变量在mediaSubbsession建立RTPsink时要用到,它直接影响了SDP里对于AAC音频描述字段的产生
添加类 AACAudioLiveServerMediaSubsession ,继承自ADTSAudioFileServerMediaSubsession
createNewStreamSource函数创建上面的ADTSAudioLiveSource做为音频输入源,参数estBitrate为预估的码率,海思AAC编码码率设置为24kbps,所以estBitrate设置为24.
createNewRTPSink有必要继承,因为需要根据音频源的采样率、通道数等创建RTPSink.
2.添加h264支持
添加 H264FramedLiveSource ,继承自FramedSource
unsigned maxFrameSize()函数必须继承,里面设置帧最大可能的大小,我设置为100000,如果不继承就是默认的,会出现画面马赛克
doGetNextFrame函数里面和AAC取帧的处理差不多,我加多了一个步骤,就是第一次取帧的时候会调用接口去产生一个关键帧,并且等待这个关键帧到来才处理,这样连接后出图会比较快。
添加类 H264VideoLiveServerMediaSubsession ,继承自H264VideoFileServerMediaSubsession
这个类就是实现createNewStreamSource时创建H264FramedLiveSource
3.修改DynamicRTSPServer
修改类DynamicRTSPServer,在lookupServerMediaSession函数里动点手脚,默认在这个函数里面会根据文件名去寻找服务器下相应的文件做为直播源,我这里比较如果是我特定的live源名字则直接返回,相应的live源创建rtsp服务器的时候就添加好
4.初始化rtsp server
初始化rtsp服务器,添加一个ServerMediaSession,该mediaSession添加一个AACAudioLiveServerMediaSubsession和一个H264VideoLiveServerMediaSubsession,然后把该mediaSession添加给rtsp服务器。
客户端访问 rtsp://x.x.x.x/ch0.live 时就可以看到实时的摄像头图像与声音啦!
最好是中维芯片模组比较好调试并且效果也还好,一般价格会比海斯方案的贵个5-10元左右。
高清百万像素网络摄像机是安防行业推出的应用于监控领域的专业视频监控摄像机。通常采用MPEG4编码算法,高端的采用标准h.264算法,录像分辨率达到720P(1280* 720)或1080P(1920*1080)。基于标准H.264 Main Profile算法的百万像素网络摄像机一般采用500万像素的逐行扫描图像传感器,支持高清模拟输出,清晰度可以达到720TVL的广播级图像画质。由于采用标准H.264压缩,录像文件可使用标准解码器解码,支持常用播放软件直接播放。在相同码率下具有比MPEG-4倍增的画质,在同样的画面质量下,码率仅为MPEG-4的二分之一。由于高清百万像素网络摄像机不但清晰度高而且操作简便、易于安装,在很大程度上减少工程布线和施工成本,可以让您的CCTV网络无限延伸。
1、MPEG-4编码标准:视频采用标准MPEG4编解码,支持MPEG4和CIF编码格式;支持PAL/NTSC视频输出。
2、支持DHCP:用户可用DHCP(动态主机配置协议)建立IPCAM的工作环境,DHCP是一个通过网络设备获取客户在IP网中操作所必要的多种参数的协议,通过使用这个协议,系统管理工作量大量减少,设备以最小的IP地址自动添加到网络上。3、网络功能:支持完整的TCP/IP协议簇,内置WEB服务器,支持浏览器访问。
4、PTZ控制功能:电子云台功能,支持众多编解码协议。
5、报警功能:1路报警输入,1路报警输出。
6、移动侦测:在可视范围内进行多方位移动侦测,具有遮挡报警,报警联动输出等功能。
7、用户管理:多级用户权限管理方式。高级管理员可以创建15个操作员,每个操作员的权限可以设定,系统安全性更好。
8、图像存储:录像采用标准MPEG4格式存储,支持第三方播放器播放文件;网络存储,支持FTP、SMTP报警信息远程上传支持本地存储及SD卡存储。
9、手机远程监控:WIFI、3D高清网络摄像机可以通过无线信号进行手机远程视频监控,随时随地,掌握被监控者信息。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)