使用LIVE555渲染RTSP H.264视频流(Render RTSP H.264 video s

2019-08-16 18:19发布

我希望用LIVE555库来呈现实况流屏幕的例子。 显然,这很简单,但它会真正帮助看到它完成,而不是简单地读了“很简单”! 该gmane站点上写道:

“要更新(副本)的‘testRTSPClient’的代码,以便它呈现的视频数据是相当简单:你只需要改变‘DummySink’类,所以的渲染(或调用解码库做渲染。)特别是,你会改变“afterGettingFrame()”函数的实现 - 在行479.这就是它!

(实际上,对于H.264视频,还有就是你可能会需要做的一两件事。H.264流具有出带外的配置信息(SPS和PPS NAL单元),您可能需要喂到解码器进行初始化。为了得到这个信息,请拨打“MediaSubsession :: fmtp_spropparametersets()”(视频“子会话”对象),这会给你一个(ASCII)字符串,然后你可以通过这个来“parseSPropParameterSets() “产生你的解码器的二进制NAL单元。)”

PS:我使用Visual Studio和Windows

Answer 1:

我没有在以前的工作类似的东西。 诀窍是,利用DirectShow渲染。 基本上,live555是不译码或本身渲染什么,你需要某种H264解码器以及视频表面。 幸运的是,DirectShow的同时提供,但需要相当多的编程去上班。

live555是只提供流机制,这意味着它会从网络上或文件源采取NAL包(H264数据包,如果你愿意),并把它推到了“DummySink”,你仍然需要解码(变换NAL单元以位图)和渲染(绘制位图到屏幕)。 这是不是一件LIVE555会为你做,但其他库即可,如ffmpeg的,但我没有设法得到它的工作,所以我们搬到了DirectShow的解决方案。 即,“MS DTV-DVD解码器”是非常有用的,可以使用由我们正在使用(自动的)芯片组提供的一些硬件加速。 LIVE555的另一个有用的特征是,它会处理控制协议,例如RTSP来处理流播放/停止/暂停请求。

编辑:既然您正在搜索的代码,我发现一个开源的使用LIVE555 DirectShow过滤器为您服务。 您应该能够运行的东西,如GraphStudio或GraphEdit中。 最终,你可以学习如何创建在C ++中的DirectShow图形 。 这实在不是很复杂,因为万吨的例子已经存在。 最困难的部分是创建过滤器,但解码器和渲染器已经在那里为你,我也为你提供了源过滤器。



Answer 2:

使用Windows上LIVE555代码又如可在视频处理项目 。 像埃里克的建议,它使用的DirectShow(这是在Windows预MediaFoundation的标准方法。用活的代码可以找到这里 。

如果你使用的是Windows 7,有一个内置在当渲染图形将被插入介质管道H.264解码器。 在早期版本的Windows,你必须安装自己的H.264解码过滤器。

免责声明:我是视频处理项目的作者之一。



文章来源: Render RTSP H.264 video stream using live555