在DirectShow中以编程方式更改记录文件
|
我使用DirectShow制作了一个控制台应用程序,该应用程序从实时资源(现在是网络摄像头,然后是电视采集卡)中进行记录,在叠加中添加当前日期和时间,然后将音频和视频另存为.asf。
现在,我希望输出文件每60分钟更改一次,而不停止图形。我绝对不能失去直播的任何时间。
该图是这样的:
http://imageshack.us/photo/my-images/543/graphp.jpg/
我看了GMFBridge,但是我的示例有一些编译问题。
我想知道是否有一种方法可以将叠加层滤波器和音频源中存在的内容分开,将它们连接到另一个asf编写器(已暂停),然后每60分钟切换一次。
暂停的asf过滤器的文件名必须更改(pp.asf,pp2.asf,pp4.asf ...)。像这样:
http://imageshack.us/photo/my-images/546/graph1f.jpg/
与pp1暂停。我在互联网上发现一些人说,如果图形没有进入停止模式,则asf编写者将删除当前文件。
没有找到相关结果
已邀请:
3 个回复
好按紊叉
,使用从samplegrabber过滤器获取的样本来创建并保存wmv文件 时间到了,关闭一个
并创建另一个。 这样,在切换输出文件时不会丢失任何一帧。 当然,还存在将样本排队和存储样本(在切换编码器时)并适当地重新对齐音频/视频时间戳的问题,但是根据我的研究,这是唯一的“正常”方法做到这一点,我在实践中使用。
董碘奴星
莽缓逢
2.)注册一个自定义接收器:
自定义接收器可以是实现
的类,它需要实现被调用的回调方法,即,在写入ASF标头(
)和写入数据包(
)时-在实现中,您可以将其写入到任何地方例如,根据需要在此类上提供其他方法,您可以在其中指定要写入的文件名。 请注意,如果您需要在60分钟的文件中的每一个中写出标头信息,则此解决方案并不能满足您的需要-在初始标头之后,您将仅获得ASF数据包数据。一种解决方法是在每个文件的任何数据包数据之前重写初始头,但是这将产生未索引(不可搜索)的ASF文件。