2011-06-30 39 views
2

Live555 lib有一个很好的例子testOnDemandRTSPServer.cpp这个例子只是给出了一个给定的文件。我想流多个文件。 Live555有播放列表的概念,或者如何在Live555中传输多个文件?使用Live555流式传输多个文件

祝福

PS:我尝试添加多个子会话,在这种情况下LIVE555只是流上届会议文件...

+0

您的意思是连续流式传输多个文件(在同一个RTSP会话中),还是指多个媒体文件到不同的客户端? – Ralf

+0

@Ralf现在我的意思是连续流多个文件。假设我有videoA,VideoB,VideoC ..如果可能,我想在一个会话中连续流式传输它们...假设客户端请求rtsp:// xxxxxx/Video和server会首先流式传输VideoA,然后是VideoB,然后是videoC等。 – Novalis

回答

0

我0.02美分: 我不知道如果这是有道理的:如果你想在同一个会话中进行流式传输,你将如何确保它们都以相同的格式进行编码。 RTSP描述获取文件的媒体会话描述,并用于设置流会话,因此所有文件编码相似性至关重要。

RTSP不对播放列表做任何规定。通常播放列表不通过RTSP传输,而是通过HTTP传输。 IMO如果播放列表驻留在客户端上,则等待RTCP bye数据包(在eof处),然后为播放列表中的下一个文件/ RTSP URI执行SETUP和PLAY更有意义。

如果你只是想流文件的序列(播放列表是在服务器上),其中RTSP客户端刚启动一个会话,当然没有什么可以阻止您创建的LIVE555库做什么自定义文件源你想...

+0

那么,假设:他们都是以相同的格式编码对我来说是真的......没有什么阻止我当然写自定义源文件,但我只是想知道库是否有这样的能力建设......谢谢 – Novalis

+0

好的,当然。如果您使用live555,那么加入邮件列表是非常值得的,响应时间通常非常好。只要确保您在发布之前阅读常见问题解答。 – Ralf

0

还有一个应用程序随live555代码。 Live555Media服务器存在于源代码的mediaServer目录中。这样做的工作。它使用dynamicRTSP服务器类。您将所有媒体文件都存放在该文件夹中,并以rtsp://ip/filename的身份访问它们。

0

最近,我不得不做类似的任务,并具有类似的功能:

在这里你可以为视频H264流文件不喜欢的播放列表行中玩(当然,如果它们是相同的分辨率,编码配置文件等)

你将不得不修改ByteStreamFileSource :: doGetNextFrame方法。 有没有像FEOF(FFID)代码

if (feof(fFid)) 
{ 
    CloseInputFile(fFid); 
    fFid = OpenInputFile(envir(), "test.264"); 
    //fileName 
} 
else .... 

当然,如果你仍然需要遵守LGPL,你将会有更多的工作要做。你必须复制/重命名这个类在库外,做同样的用H264VideoFileServerMediaSubsession和修改方法createNewStreamSource它会使用你重写的ByteStreamFileSource类。

相关问题