基于mp4文件格式的http实时视频传输方法

文档序号:9924161阅读:4088来源:国知局
基于mp4文件格式的http实时视频传输方法
【技术领域】
[0001] 本发明设及视频传输技术领域,特别是指基于MP4文件格式的HTTP实时视频传输 方法。
【背景技术】
[0002] 实时视频在互联网的传输多采用W下几种协议:
[0003] 1:RTP(实时传输协议)主要用于摄像头,视频监控,视频互动。缺点是在web页面要 用插件接收数据流。
[0004] 2:RTMP/RTMFP RTMP主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服 务器之间进行音视频和数据通信.RTMFP是Adobe公司开发的一套新的通信协议,主要用来 在Adobe Flash Player的终端用户之间进行直接通信。包括音频视频数据通信。Web页面要 用Flash插件接收数据流,apple ios不支持Flash插件。
[0005] 3:HLS巧ttp Live Streaming,ht1:p实时流协议化LS是苹果公司推出的基于ht1:p 流媒体传输协议,使用MPEG-2的封装音视频压缩数据流。缺点是只有apple ios支持, google C虹ome支持的不是很好。其他的浏览器不支持。
[0006] 4:其他各类私有协议。出现在各种不同的应用中,都无法简单的嵌入到web页面 中。
[0007] W上的几种的视频传输方案,在接收端都无法实现与所有主流浏览器的兼容,或 者需要自定义的插件来实现;在不同的接收端要使用不同的系统和浏览器。

【发明内容】

[000引本发明提出一种基于MP4文件格式的HTTP实时视频传输方法,解决了现在的视频 传输方案兼容性差的问题,
[0009] 本发明的技术方案是运样实现的:
[0010] -种基于MP4文件格式的HTTP实时视频传输方法,包括W下步骤:
[0011] (1)启动HTTP服务器;
[0012] (2)客户端向服务器发送HTT内青求,请求服务器传输实时音视频数据流;
[0013] (3)服务器检查HTTP请求格式是否有效,若无效则返回404,或者其他错误数据,关 闭连接;否则,进入下一步;
[0014] (4)若还没有启动采集编码则启动编码采集,将H. 264视频编码器和AAC音频编码 器的参数信息封装到MP4文件头中,并首先将封装好MPEG-4文件头通过HTTP协议发送给客 户端;
[0015] (5)若已经启动编码采集,则将封装好的MP4文件头通过HTTP协议发送给客户端;
[0016] (6)将H.264视频编码器得到的视频编码数据和AAC音频编码器得到的音频编码数 据封装到MP4文件的影片分片数据块中;
[0017] (7)将影片分片数据块加载到多媒体数据流中进行发送;
[0018] (8)停止接收多媒体数据流。
[0019] 进一步的,在步骤(4)中,H. 264视频编码器和AAC音频编码器从多媒体源中的视频 数据和音频数据进行采集编码,多媒体源包括W路径和文件名表示的标签W及引用计数标 识,多媒体源对应N个多媒体数据流,N为整数,N大于等于1。
[0020] 进一步的,MP4文件包括文件类型数据块、影片信息数据块和若干影片分片,文件 类型数据块用于指示该MP4文件的应用信息;影片信息数据块用于指示该MP4文件的影片信 息;影片分片用于包含音频数据和视频数据。
[0021] 进一步的,文件类型数据块位于MP4文件的开始部位,依次包括1个32位的主标识, 1个32位的副版本号和1个W32位为单位元素的公司标识。
[0022] 进一步的,影片信息数据块包括影片头数据块和多媒体轨道数据块;多媒体轨道 数据块包括多媒体轨道头数据块和媒体数据块;媒体数据块包括媒体头数据块、管理引用 数据块和媒体信息数据块;媒体信息数据块包括视频媒体头数据块、音频媒体头数据块、媒 体数据信息块和帖表数据块。
[0023] 进一步的,影片分片包括扩展的影片数据块、影片分片数据块和影片分片随机访 问数据块。
[0024] 进一步的,扩展的影片数据块包括扩展的影片头数据块和扩展的多媒体轨道信 息;扩展的影片头数据块包括一个用于表示MP4文件的持续时间的fragment_duration字 段;扩展的多媒体轨道信息用于描述每个多媒体数据流的分片信息。
[0025] 进一步的,影片分片数据块包括影片分片头数据块和分片的多媒体轨道数据块; 分片的多媒体轨道数据块的个数大于等于1,影片分片头数据块包含一个序列号,序列号用 于表示影片分片的序号。
[0026] 进一步的,分片的多媒体轨道数据块包括分片的多媒体轨道头数据块、分片的多 媒体轨道运行信息数据块。
[0027] 本发明的有益效果在于:通过将视频编码的H. 264码流和音频编码的AAC码流W MP4文件格式封装到多媒体数据流中,再通过HTTP协议传输到接收端,由浏览器接收和播放 收到的实时的MP4文件的码流。解决了音视频在Web应用中无法兼容各种系统各种浏览器的 问题。
【附图说明】
[0028] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 W根据运些附图获得其他的附图,
[0029] 图1为本发明基于MP4文件格式的HTTP实时视频传输方法的流程图。
【具体实施方式】
[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围,
[00川 1、MP4文件格式概述
[0032] MP4文件中的所有数据都装在box(数据块)中,也就是说MP4文件由若干个box(数 据块)组成,每个box(数据块)有类型和长度,可W将box理解为一个数据对象块。box(数据 块)中可W包含另一个box(数据块),运种box(数据块)称为container box(数据块容器)。 一个MP4文件首先会有且只有一个"ftyp"类型的box(数据块),作为MP4格式的标志并包含 关于文件的一些信息;之后会有且只有一个"moov"类型的box(数据块),它是一种 con化iner box(数据块容器),子box包含了媒体的metadata(元数据)信息;MP4文件的媒体 数据包含在"mdat"类型的box(Midia Data Box)中,该类型的box也是container box,可W 有多个,也可W没有(当媒体数据全部引用其他文件时),媒体数据的结构由me化da化(元数 据)进行描述。
[0033] 2、基础概念:
[0034] 化ack(多媒体轨道)表示一些sample(帖)的集合,对于媒体数据来说,track表示 一个视频或音频序列。
[0035] hint化ack(多媒体轨道信息指示)运个特殊的化ack并不包含媒体数据,而是包 含了一些将其他数据track(多媒体轨道)打包成流媒体的指示信息。
[0036] sample(帖)对于非hint track来说,video sample(视频帖)即为一帖视频,或一 组连续视频帖,audio samp 1 e(音频帖)即为一段连续的压缩音频,它们统称samp 1 e。对于 hint track ,sample定义一个或多个流媒体包的格式。
[0037] sample化ble(帖表)指明sampe时序和物理布局的表。
[003引 chunk (帖块)一个track (轨道)的几个samp 1 e (帖)组成的单元。
[0039] 3、Box (数据块)
[0040] 首先,box(数据块)中的字节序为网络字节序,也就是大端字节序(Big-Endian), 简单的说,就是一个32位的4字节整数存储方式为高位字节在内存的低端。Box由header (头)和body(体)组成,其中header(头)统一指明box的大小和类型,body(体)根据类型有不 同的意义和格式。
[0041] 标准的box(数据块)开头的4个字节(32位)为box size(数据块大小),该大小包括 box header!;数据块头)和box body(数据块体)整个box(数据块)的大小,可W在文件中定 位各个box(数据块)。如果size(数据块大小)为1,则表示运个box的大小为large size(数 据块大小超过4G,无法用4字节值保存),真正的size(数据块大小)值要在Iargesize域上 得到。(实际上只有"mdat"类型的box才有可能用到large size。)如果size为0,表示该box 为文件的最后一个box,文件结尾即为该box结尾。(同样只存在于"mdat"类型的box中。)
[0042] box size(数据块大小)后面紧跟的32位为box type(数据块类型),一般是4个字 符,如吁typ"、"moov"等,运些box type都是已经预定义好的,分别表示固定的意义。如果是 "uuid",表示该box(数据块)为用户扩展类型。如果box type是未定义的,应该将其忽略。
[0043] MP4文件包括文件类型数据块、影片信息数据块和若干影片分片,文件类型数据块 用于指示该MP4文件的应用信息;影片信息数据块用于指示该MP4文件的影片信息;影片分 片用于包含音频数据和视频数据。
[0044] 文件类型数据块位于MP4文件的开始部位,依次包括1个32位的主标识,1个32位的 副版本号和I个W32位为单位元素的公司标识,用来指示MP4文件应用级别的信息。
[0045] 影片信息数据块放置在文件类型数据块的后面,包括1个影片头数据块和若干个 多媒体轨道数据块;
[0046] 影片头数据块结构如下表所示:

[0049] 多媒体轨道数据块(Track Box,trak)包括多媒体轨道头数据块和媒体数据块; "trak"也是一个container box(数据块容器),其子box包含了hack(多媒体轨道)的媒体 数据引用和描述化int track除外)。一个MP4文件中可W包含多个化ack,且至少有一个 track,运些track之间彼此独立,有自己的时间和空间信息。"trak"必须包含一个"t化d"和 一个"mdia",其中"tldicT为t
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1