从已有流服务器上接收多媒体流,对码流解码、分析、播放。
站在巨人的肩膀上才能看的更远。对于这个问题,先参考已有的比较成熟的开源项目,从中找到研究的思路。VLC无疑是一个比较好的选择。VLC是一种跨平台的媒体播放器和流媒体服务器。其实VLC开源项目本身就是基于其他的开源项目:FFMPEG,LIVE555.下面主要讲VLC作为多媒体播放器的使用。
引用地址:http://loosky.net/?p=1127
视频播放的基本原理
几乎所有的视频播放器,如VLC、MPlayer、Xine,包括DirectShow,在播放视频的原理和架构上都是非常相似的,理解这个对理解VLC的源码会有事半功倍的效果。
大致的来说,播放一个视频分为4个步骤:
1. acess 访问,或者理解为接收、获取、得到
2. demux 解复用,就是把通常合在一起的音频和视频分离(还有可能的字幕)
3. decode 解码,包括音频和视频的解码
4. output 输出,也分为音频和视频的输出(aout和vout)
拿播放一个UDP组播的MPEG TS流来说吧,access部分负责从网络接收组播流,放到VLC的内存缓冲区中,access模块关注IP协议,如是否IPv6、组播地址、组播协议、端口等信息;如果检测出来是RTP协议(RTP协议在UDP头部简单得加上了固定12个字节的信息),还要分析RTP头部信息。这部分可以参看VLC源码 /modules/access/udp.c。在同目录下还可以看到大量的access模块,如file