mp4 流化本质

来源:互联网 发布:crf算法实现 编辑:程序博客网 时间:2024/06/05 08:02
MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。 本文提出了基于MP4文件存储格式的高效实时流化技术。流化的本质就是按顺序提取音视频帧的过程,即计算每个数据帧在文件中的偏移量的问题。由于MP4文件的音视频帧在文件中的物理位置不是顺序存放,而是以一种相对凌乱的状态存在,若在媒体数据播放的过程中,计算每帧偏移量难以做到高效率。因为计算偏移量是个相对繁琐的过程,要计算多级偏移和很多其他数据。为了解决这个问题,本文提出预处理的方案,即在得到文件元数据信息(metadata)的时候,先不和服务器通信并播放每帧数据,而是预先把每帧数据的大小和相对于媒体文件的偏移地址都计算出来。这样虽然在流媒体播放之前要用一段时间计算数据,但在播放开始之后,将不再进行繁琐的计算偏移量过程。从而提高了MP4文件流化效率。 将计算媒体数据偏移量这块工作拿到客户端来做也是本系统的另外一个特色。对于通常的流媒体系统,服务器做了更多的工作。首先媒体文件一定是存放在服务器端,通过流的方式发送给客户端。既然服务器有媒体文件,所以很自然地利用服务器来做流化。这种方案虽然可行,但在客户机比较多的情况下,服务器的负担将会增大很多,能否有效率地完成流化过程是一个待考虑的问题。相反,每个客户机都是独立的实体,若流化过程能在客户机上实现,则效果会好得多。所以流化MP4模块集成在每个客户机上,在播放前客户与服务器通信一次,拿到媒体元数据信息,然后客户端计算出每帧数据的偏移地址和大小,发给服务器。而服务器实现起来就相对简单,按客户的要求去指定偏移地址的地方取指定大小的数据即可。从这个意义上说,服务器相对“傻瓜化”了。更多的智能工作是分别在各个客户端完成的。 同时本课题对网络流媒体视音频帧的同步、网络传输协议、如HTTP、RTSP、以及基于DirectX构架和Direct Show的媒体播放单元,都提出了两种不同方案,分析比较各自的优劣,最终选定基于HTTP和DirectX的技术方案,完成基于MP4文件格式的流媒体系统开发
原创粉丝点击