Live555 lib有一个很好的例子 testOnDemandRTSPServer.cpp 这个例子只是流“一”给定文件。我想流式传输多个文件。 Live555是否具有播放列表概念或如何在Live555中流式传输多个文件?
祝福
PS:我尝试添加多个子会话,在这种情况下,Live555只会传输最后一个会话文件......
答案 0 :(得分:0)
我的0.02美分: 我不确定这是否有意义:如果你想在同一个会话中传输它们,你将如何确保它们都以相同的格式编码,这是一个要求。 RTSP describe获取文件的媒体会话描述,这用于设置流会话,因此所有文件编码方式都至关重要。
RTSP不对播放列表进行任何规定。通常播放列表不通过RTSP传输,而是通过HTTP传输。 IMO如果播放列表驻留在客户端上,则等待RTCP再见数据包(在eof上)然后为播放列表中的下一个文件/ RTSP URI进行SETUP和PLAY更有意义。
如果您只想传输一系列文件(播放列表在服务器上),RTSP客户端只启动一个会话,当然没有什么能阻止您在live555中创建自定义文件源做你想要的图书馆......
答案 1 :(得分:0)
live555代码还附带了一个应用程序。 Live555Media服务器位于源代码的mediaServer目录中。这样做了。它使用dynamicRTSP
服务器类。您将文件夹包含所有媒体文件,并将其作为rtsp://ip/filename
访问。
答案 2 :(得分:0)
最近我不得不做类似的任务和类似的功能:
这里你可以做什么视频H264流文件在播放列表中播放(当然,如果它们是相同的分辨率,编码配置文件等)
您必须修改ByteStreamFileSource :: doGetNextFrame方法。 有像feof(fFid)
这样的代码 if (feof(fFid))
{
CloseInputFile(fFid);
fFid = OpenInputFile(envir(), "test.264");
//fileName
}
else ....
当然,如果您仍然需要LGPL合规性,那么还有更多的工作要做...您必须在库外复制/重命名此类,并使用H264VideoFileServerMediaSubsession和修改方法createNewStreamSource,它将使用您重写的类ByteStreamFileSource。