我只是有一个简单的过滤器图表,它从rtsp源[通常是h264和mp4]获取媒体流并使用mp4 muxer将它们保存到文件...
RtspSourceFilter ---> MP4 Muxer ---> File Writer.
一切正常。但我有约束[现在的新要求]。我必须根据两个标准编写文件:它们的大小和持续时间......假设用户可以定义如下规则:
if duration > 1 hour or size > 1 gb then write stream to new file
在我的图表中,为了这个,
我必须根据条件停止我的图表并创建并开始新的图表 一个新文件名...
这很糟糕,因为在任何文件中我都必须重新连接我的源并可能丢失一些数据......
处理它的最佳方法是什么?
我的解决方案:[但不满意]
我有源代码RtspSourceFilter和MP4Muxer [开源],所以忘记了FileWriter ... MP4 Muxer成为Muxer的作家...所以在内部停止并在必要时写入然后创建新文件...一些缓冲没有松开数据...
RTSP Source Filter ---> New MP4 Writer [ a writer with mp4 muxer in it]
但是这引入了不必要的复杂性......现在我通过新的MP4 Writer成为MUX操作的维护者......由于我没有时间真正理解Mux的作用,我必须修改 - 破解它以表现我想要的东西。比喻:我有车,我将从它制造一架直升飞机...这将是非常难看和不信任的直升机...可能我的新MP4过滤器[代码]将是如此...... [泥球大球]
答案 0 :(得分:1)
听起来GMFBridge可能对您有用。它允许您创建一个源图和多个接收器图。然后,当满足约束时,将源图桥接到新的接收器图。
如果您将桥接器置于缓冲(非丢弃)模式,则不应丢失任何样本。
但是,您必须调查此解决方案是否适合您。请查看示例应用程序以获得快速概述。