如果你是一个Directshow开发员,用过的Filter一定有很多,可能大部分都是Directshow SDK内置的Filter。虽然Directshow SDK已经包含了很多实现了各种功能的Filter,但是由于应用的多样性和复杂性,这些Filter往往还不能满足我们实际应用开发的需求。这时候就需要借助第三方Filter,或者自己来开发Filter。开源的实现了RTSP协议的Directshow Filter比较少,这里我向大家介绍一个开源的Filter:RTSP Renderer Filter,完成了一个小型RTSP 服务器的功能。

  这个开源Filter的作者是一个外国人,是一位擅长Directshow技术的专家,他的博客是:GDCL(http://www.gdcl.co.uk)。

   这个Filter的介绍和下载地址:

   http://www.gdcl.co.uk/2013/05/16/RTSP-Jukebox.html

   http://www.gdcl.co.uk//2013/11/12/RTSP-Ports.html

  我简单说一下这个Filter的功能:

     支持多个客户端连接,监听端口是554;

     支持Rtsp over udp传输;

     支持发送实时的视频流和音频流,其中视频支持H264,音频支持AAC;

   这个Filter的优点是:代码精简,5千行代码不到就实现了一个简单的RTSP服务器功能。

   这个Filter原先的版本有几个Bug,我发现之后将它们修改了,修改后的版本运行挺稳定的。我把修改后的源码工程放到资源里给大家下载:http://download.csdn.net/download/toshiba689/10263287

   在使用这个Filter前我们要准备好一个工具:GraphEdit。对于用过Directshow的人一定很熟悉GraphEdit这个工具,如果你没有用过Directshow或对GraphEdit不熟悉也没关系,下面我会给大家具体讲一下使用步骤。GraphEdit工具可从我的资源中下载,下载地址:http://download.csdn.net/download/toshiba689/10264655

   然后,要注册Filter,当你下载了代码工程后,通过regsvr32命令注册Release目录下的RtspServerFilterX86.dll。另外,请大家注册另外一个Filter--FrameExtractFilter,下载链接:http://download.csdn.net/download/toshiba689/10264661,这是一个以H264文件作为源的Source Filter,和下游的RTSP Server Renderer连接,可以发送H264的流。

  下面我讲一下怎么在GraphEdit中使用这个Filter和运行服务器。

  第一步,打开GraphEdit,点击工具栏上的“Insert  a filter to graph"按钮,截图如下:

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

  然后,弹出一个对话框,列举了系统中已经安装和注册的Filter。

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

  第二步,选择Directshow分支将它展开,展开后找到FrameExtractFilter,如下图所示:

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

双击它,然后会弹出一个选择文件的对话框,在下面的文件类型中选择”所有文件“,然后选择一个H264格式的文件,一般后缀名为:.h264,.264。如果是合法的H264格式,这个Filter就会加载这个文件。接着,Filter就被添加到GraphEdit的工作区中。

  第三步,选择GDCL Filter,并插入到GraphEdit的工作区中,方法同上。

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

添加该Filter后,工作区显示的情况如下:

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

  第四步,连接Pin,将Source Filter的Output Pin与GDCL RTSP Server的Input Pin进行连接,连接后的图变成如下:

一个开源的Directshow RTSP Filter:实现了一个简单的RTSP Server

然后点击工具栏上的”运行“按钮,那么RTSP服务器就开始工作了。

  第五步,打开VLC或其他RTSP客户端,输入流地址,比如在这个例子中URL为:rtsp://192.168.1.101:554/185.1080P.264,其中流名称为你之前选择的文件名。这时候,VLC就开始播放了。

注意事项:如果你开始运行了服务器一次,然后断开GDCL RTSP Server与前面Filter的Pin连接,然后再次连上,接着运行,会发现VLC连接后播不了。这个Filter是不允许这样操作的。你断开Pin的连接后,应该把RTSP Filter删除掉,然后重新添加,再连,这样就没问题了。

相关文章:

  • 2022-12-23
  • 2021-05-20
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2021-12-12
  • 2021-07-15
猜你喜欢
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2021-08-26
  • 2022-12-23
相关资源
相似解决方案