首页> 中国专利> 基于live555框架和ffmpeg库的密文H264视频直播和点播平台

基于live555框架和ffmpeg库的密文H264视频直播和点播平台

摘要

本发明提供一种基于live555框架和ffmpeg库的密文H264视频直播和点播平台,包括:基于live555框架的流媒体服务器和外部存储服务器;所述流媒体服务器和外部存储服务器通过网络连接;所述流媒体服务器包括live555直播代理逻辑服务器和live555点播逻辑服务器;所述外部存储服务器上设有密文H264视频转码模块和ffmpeg库;live555点播逻辑服务器和外部存储服务器之间通过TCP协议通信,为此,在live555点播逻辑服务器上建有TCP客户端,在外部存储服务器上建有TCP服务器端。本发明实现了城市安防监控体系中密文视频流的直播和密文视频文件的点播,可以保证密文视频传输的实时性需求和保证用户的较佳体验度。

著录项

  • 公开/公告号CN105007465A

    专利类型发明专利

  • 公开/公告日2015-10-28

    原文格式PDF

  • 申请/专利权人 江苏物联网研究发展中心;扬州大学;

    申请/专利号CN201510430852.9

  • 申请日2015-07-21

  • 分类号H04N7/18(20060101);H04L29/06(20060101);H04N21/472(20110101);

  • 代理机构无锡市大为专利商标事务所(普通合伙);

  • 代理人殷红梅;屠志力

  • 地址 214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座

  • 入库时间 2023-12-18 11:42:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-08

    授权

    授权

  • 2015-11-25

    实质审查的生效 IPC(主分类):H04N7/18 申请日:20150721

    实质审查的生效

  • 2015-10-28

    公开

    公开

说明书

技术领域

本发明涉及一种应用于城市安防监控体系的视频平台,尤其是一种密文H264视频直播和点播平台。

背景技术

Live555流媒体框架是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体的传输,并提供对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持,主要应用于对流媒体的音视频的处理,实现媒体的实时推送;ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

随着视频编解码技术和网络技术的快速发展,网络视频通信技术成为了人们生活的一部分,然而在开放网络中,视频信息很容易遭受人为的攻击,尤其是在一些重要的应用场景。在城市安防监控体系中,网络信息采集是公共安防系统的基础,目前面临的威胁有1.劫持前端信息采集设备2.盗取、篡改所采集的信息3.前端设备故障、信息采集质量诊断4.特殊应用场景对摄录器材的安全性有特别要求。现在市面上已经有部分对视频加密的产品,主要方法是将视频视为普通文本,对存储在本地的视频文件全部加密。这种方式未考虑数据格式不变性和数据可操作性,难以针对传输中的视频进行加密,因此应用受到极大的限制。在城市安防监控体系中,设计的加密方案是在视频被压缩编码成H.264格式后,保留视频帧的参数和其它重要信息,仅对帧的数据主体进行加密。这样可以既保证视频内容的安全性,又能通过普通视频传输协议进行视频的传输。

由于加密方式的选择,完全没有破坏加密视频的结构,对其进行流传输完全可以实现,然而不同于明文视频流推送,密文视频流推送主要面临两个问题,第一:要保证密文视频传输过程中的可靠性,关键帧一旦丢失,会影响密文播放器对于加密视频的解密;第二:对密文视频的封装,一旦视频的帧结构和字节改变,后期将无法解密播放。要实现密文视频的可用性,需要研制相应的密文视频流推送平台。

对于密文视频推送平台的建立,必须针对于上述存在的两个问题进行解决。

发明内容

本发明的目的在于提供一种基于live555和ffmpeg库的密文H264视频直播和点播平台,此方案结合了live555框架和ffmpeg开源库提出了一套应用于城市安防监控体系中针对加密视频流流媒体直播点播的平台,可以实现密文视频流的直播和密文视频文件的点播,可靠性高,可以保证密文视频传输的实时性需求和保证用户的较佳体验度。本发明采用的技术方案是:

一种基于live555框架和ffmpeg库的密文H264视频直播和点播平台,包括:基于live555框架的流媒体服务器和外部存储服务器;所述流媒体服务器和外部存储服务器通过网络连接;

所述流媒体服务器包括live555直播代理逻辑服务器和live555点播逻辑服务器;

所述外部存储服务器上设有基于ffmpeg库的密文H264视频转码模块和ffmpeg库;

live555点播逻辑服务器和外部存储服务器之间通过TCP协议通信,为此,在live555点播逻辑服务器上建有TCP客户端,在外部存储服务器上建有TCP服务器端。

进一步地,

所述live555直播代理逻辑服务器采用RTSP/RTP/RTCP协议簇,接收从加密摄像机传送来的密文H264视频流,并进行RTP打包,在用户视频播放器的直播请求下,将密文H264视频流通过RTSP/RTP/RTCP协议簇推送至用户视频播放器进行播放;

在外部存储服务器上,所述密文H264视频转码模块,通过调用ffmpeg库,对密文H264视频文件进行关键帧和视频帧的解析,并对密文H264视频文件的帧进行MKV容器的封装,形成密文MKV视频文件并作保存;密文H264视频文件通过接收加密摄像机的密文H264视频流并保存获得或在外部存储服务器中预置密文H264视频文件获得;

所述live555点播逻辑服务器采用RTSP/RTP/RTCP协议簇,在收到用户视频播放器的点播请求时,通过TCP协议从外部存储服务器上获取与密文H264视频文件对应的密文MKV视频文件,并将密文MKV视频文件进行RTP打包,然后通过RTSP/RTP/RTCP协议簇推送至用户视频播放器进行播放。

更进一步地,

所述密文H264视频转码模块进行如下操作,以形成密文MKV视频文件:

S201,首先,输入密文H264视频文件和音频文件;

S202,打开并初始化密文H264视频文件,调用编解码库libavcodec,赋值AVCodeContext参数;调用媒体格式库libavformat;产生密文H264视频码流;

S203,打开并初始化音频文件,调用编解码库libavcodec,赋值AVCodeContext参数;调用媒体格式库libavformat;产生音频码流;

S204,比较视频码流中的数据流分包AVpacket和音频码流中的数据流分包AVpacket的时间戳,按照时间戳先后顺序决定读取视频码流还是音频码流中的AVpacket;

S205,按照时间戳先后依次读取视频码流中的数据流分包AVpacket或音频码流中的数据流分包AVpacket;

S206,将读取的数据流分包AVpacket封装入MKV容器;

S207,输出密文MKV视频文件。

本发明的优点在于:

1)本发明采用了实时流协议,很好的保证密文视频传输的实时性需求和保证用户的较佳体验度。

2)保证了密文视频文件封装过程中对密文视频流数据结构的保护。

3)基于可靠传输层协议TCP协议,可以实现多路密文视频文件的点播,测试稳定性可靠。

附图说明

图1为本发明的结构组成示意图。

图2为本发明的密文H264视频转码模块工作流程图。

具体实施方式

下面结合具体附图和实施例对本发明作进一步说明。

本发明中的密文视频包括密文视频流和密文视频文件。

如图1所示,一种基于live555框架和ffmpeg库的密文H264视频直播和点播平台,包括:基于live555框架的流媒体服务器和外部存储服务器;所述流媒体服务器和外部存储服务器通过网络连接。

所述流媒体服务器包括live555直播代理逻辑服务器和live555点播逻辑服务器;所述外部存储服务器上设有基于ffmpeg库的密文H264视频转码模块和ffmpeg库;live555点播逻辑服务器和外部存储服务器之间通过TCP协议通信,为此,在live555点播逻辑服务器上建有TCP客户端,在外部存储服务器上建有TCP服务器端。

城市安防监控体系中的加密摄像机可提供密文H264视频流。

下面对本发明的几个主要组成部分做详细说明。

(一)基于live555框架的流媒体服务器。

现在通用的流媒体服务器,主要是基于三种协议,RTSP/RTP/RTCP、RTMP、HTTP协议,这三种都是应用层协议。HTTP协议不属于实时流媒体协议,是顺序流传输协议,直接通过HTTP协议下载文件到本地播放,不能满足实时观看的需求;RTMP和RTSP/RTP/RTCP协议满足实时流传输的要求,目前主要用于视频的直播,也能满足点播视频的需求;RTMP目前主流是用于FLV的直播点播,协议性能方面能满足要求,但是,在城市安防监控体系中的加密摄像头是对编码后的H264裸流进行推送,在进行密文视频直播时,如果采用RTMP协议,通常需要将其封装为FLV格式,大大降低了直播的效率且提高了直播时延,RTSP/RTP/RTCP协议簇,可以直接进行密文H264裸流的推送,因此,流媒体服务器上的live555直播代理逻辑服务器和live555点播逻辑服务器都采用RTSP/RTP/RTCP协议簇。

Live555开发库源代码主要包含:(1)UsageEnvironment 模块是 Live555 中最基本的基类之一,它的功能简单,主要是用于消息的输入输出和用户交互功能。(2)BasicUsageEnvrionment库。(3)GroupSock 模块主要是对套接字和网络接口的封装,用于实现视音频数据包的发送和接收功能。(4)LiveMedia 是 Live555 的核心模块。它声明了一个抽象基类 Medium,其他许多类包括 RTSPClient、MediaSource、MediaSink、MediaSession 和 RTCPInstance 都派生自该类。

实时传输协议RTP(Realtime Transport Protocol):是针对Internet上多媒体数据流的一个传输协议, 由IETF(Internet工程任务组)作为RFC1889发布。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。实时传输控制协议RTCP(Realtime Transport Control Protocol):负责管理传输质量,在当前应用进程之间交换控制信息。RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议。详见RFC2326。RTSP是一个非常类似于HTTP的应用层协议。它是一个多媒体播放控制协议,主要用来使用户在播放流媒体时可以像操作本地的影碟机一样进行控制,即可以对流媒体进行暂停/继续、后退和前进等控制。

(二)外部存储服务器。

由于本平台针对城市安防监控体系应用,最终要迁移到嵌入式系统之中,由于嵌入式板子空间容量有限,必须将密文视频文件存储在外部存储设备中,因此必须设置该外部存储服务器。

外部存储服务器和live555点播逻辑服务器通过TCP协议通信,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在流媒体服务器中(具体在live555点播逻辑服务器中)建立TCP客户端,在外部存储服务器中建立TCP服务器端,实现加密视频文件的稳定快速传输,同时加入多线程,保证多通路同时进行,以确保多用户同时进行密文视频文件的点播。

在外部存储服务器上,所述密文H264视频转码模块,通过调用ffmpeg库(此处是指ffmpeg原始库),对密文H264视频文件进行关键帧和视频帧的解析,并对密文H264视频文件的帧进行MKV容器的封装,形成密文MKV视频文件并作保存;密文H264视频文件通过接收加密摄像机的密文H264视频流并保存获得或在外部存储服务器中预置密文H264视频文件获得。

在加密摄像头中,推送和保存的都是基于H264的密文视频流,对于直播而言,没有对拖动进度条和快进快退的需求,所以密文播放器直接接受H264流就可以,但是对于点播而言,由于H264裸流的结构都是紧密的关键帧和视频帧数据,没有包含视频时长和视频参数信息,无法进行进度条拖拽和快进快退的功能,所以必须对密文H264视频流保存成的文件进行视频容器的封装。

由于在城市安防监控体系中,需要加密摄像机产生加密过的视频流,而使用现有的编译好的ffmpeg工具直接使用,是不能正确解码的,会改变密文H264视频的关键帧的结构,推送出去的RTSP密文视频流,到达用户端无法解密。

因此密文H264视频转码模块必须调用ffmpeg原始库,对密文H264视频文件进行关键帧和视频帧的解析,然后进行密文视频帧的封装,在封装密文视频的基础上,不改变密文H264视频的结构,为后期视频解密提供保障。在各种视频封装容器中,MKV容器格式符合本系统要求,在不会改变加密视频的基础上对密文H264视频增加时间戳信息和视频参数信息。

ffmpeg原始库包括核心工具(libutils)、媒体格式(libavformat)、编解码(libavcodec)、设备(libavdevice)和后处理(libavfilter, libswscale, libpostproc)等库,分别负责提供公用的功能函数、实现多媒体文件的读包和写包、完成音视频的编解码、管理音视频设备的操作以及进行音视频后处理。

密文H264视频转码模块的具体工作过程如图2所示:

S201,首先,输入密文H264视频文件和音频文件;音频文件为额外添加的,格式为mp3格式;

S202,打开并初始化密文H264视频文件,调用编解码库libavcodec,赋值AVCodeContext参数;调用媒体格式库libavformat;产生密文H264视频码流;

S203,打开并初始化音频文件,调用编解码库libavcodec,赋值AVCodeContext参数;调用媒体格式库libavformat;产生音频码流;

密文H264视频码流和音频码流中包含了一个个顺序的数据流分包AVpacket,在AVpacket包头中含有时间戳;

S204,比较视频码流中的数据流分包AVpacket和音频码流中的数据流分包AVpacket的时间戳,按照时间戳先后顺序决定读取视频码流还是音频码流中的AVpacket;

S205,按照时间戳先后依次读取视频码流中的数据流分包AVpacket或音频码流中的数据流分包AVpacket;

S206,将读取的数据流分包AVpacket封装入MKV容器;

S207,输出密文MKV视频文件。

本发明在外部存储服务器中加入了多线程TCP服务器,开启后,将会一直处于监听状态;在live555点播逻辑服务器中加入TCP客户端,为了是TCP传输和live555主线程循环分隔开,加入多线程机制。当播放器请求密文视频时,live555中的TCP客户端发出请求,外部存储中的TCP响应,进行密文MKV视频文件的可靠传输。

本发明的主要工作流程是:所述live555直播代理逻辑服务器采用RTSP/RTP/RTCP协议簇,接收从加密摄像机传送来的密文H264视频流,并进行RTP打包,在用户视频播放器的直播请求下,将密文H264视频流通过RTSP/RTP/RTCP协议簇推送至用户视频播放器进行播放;

在外部存储服务器上,所述密文H264视频转码模块,通过调用ffmpeg库,对密文H264视频文件进行关键帧和视频帧的解析,并对密文H264视频文件的帧进行MKV容器的封装,形成密文MKV视频文件并作保存;密文H264视频文件通过接收加密摄像机的密文H264视频流并保存获得或在外部存储服务器中预置密文H264视频文件获得;

所述live555点播逻辑服务器采用RTSP/RTP/RTCP协议簇,在收到用户视频播放器的点播请求时,通过TCP协议从外部存储服务器上获取与密文H264视频文件对应的密文MKV视频文件,并将密文MKV视频文件进行RTP打包,然后通过RTSP/RTP/RTCP协议簇推送至用户视频播放器进行播放。

本发明可形成一套完整的密文直播点播方案,基于live555开源框架的RTSP直播代理服务器和点播服务器;基于ffmpeg开源库的密文H264转码,并且有效的保护了密文视频关键帧的结构,实现了视频时间戳和视频信息的添加,实现了自动扫描文件夹中的H264密文视频和多路封装的功能;基于传输层TCP协议的密文视频传输,实现了密文视频存储和推送分开进行,TCP协议很好的保证了视频传输的丢包率和稳定性,同时加入的多线程实现了多用户多路点播密文视频的功能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号