2010年4月27日星期二

VLC如何进行RTSP的支持(源码阅读心得)

今天天气很好,心情大好,Hanyionet和大家分享一下阅读VLC的源码的一些心得。

先小小吹捧和介绍一下VLC。
大家都知道VLC是一个免费,开放源码,跨平台媒体播放器,并集合先进的流媒体功能可以通过IPv4或IPv6的高带宽网络进行流媒体传输。它还支持多种视频格式和流协议。VLC的编解码基于著名的开源项目FFmpeg的libavcodec的开源库。VLC同时提供不同的接口(命令行,网络,图形用户界面,远程登录),以及提供流行的语言如C,C++,C#,Python,和Java可以使用的APIs,这使得VLC变得高度灵活,并且用于任何类型播放或流媒体处理。

VLC支持RTSP功能是通过使用liveMedia库,这个库是live555开源项目一部分。VLC支持RTSP协议,可用于在线或离线转码,视频点播服务和单播或组播流。除了这些以外,VLC还提供各种接口和API,VLC还允许被集成在一个更复杂的环境,可以让我们建立一个更先进的视频应用程序。

进入正题,VLC到底是如何进行RTSP的支持。

VLC对RTSP的支持的实现的方式是通过一种输出链(output chains)。VLC读取各种类型的视频输入(文件,流,DVD等),然后通过定义一个或多个输出链(output chains)的内容,然后用于播放流。一个链可以连接到另一个链条,然后就可以形成一个比较复杂的工作流程。下图为一个简单的例子说明。图中VLC设置并读取本地文件,然后转码,并通过使用两个链将数据传输到一个多播地址。链1将读取文件,然后转码。链2读取链1输出的转码文件,然后将流发送到至指定地址。整个过程类似UNIX管道的工作方式。

VLC RTSP example hanyionet

Enjoy!

没有评论: