将DVB-T流捕获到电影文件

时间:2010-11-24 09:03:27

标签: c# streaming video-capture capture bda

我有一个带有电视信号实时视图的表格(来自dvb-t棒)。我是来自http://directshownet.sourceforge.net/about.html的sampleproject“DTViewer”。 现在我尝试通过单击按钮将流捕获到电影文件,但是如何? 我使用C#和DirectShow.NET。

我尝试在许多sampleprojcets中搜索,但这些是针对视频输入而不是使用BDA(广播驱动程序架构)接口的dvb-t棒。

帮助!

3 个答案:

答案 0 :(得分:3)

我真的不知道“电影文件”到底是什么意思,但我可以告诉你如何捕获整个MUX(传输流)。

用一个图表创建一个图表 Microsoft DVBT网络提供商 You_Name_It BDA DVBT调谐器 You_Name_It BDA数字捕捉 MPEG-2多路分解器过滤器。< br />连接后,枚举 MPEG-2多路分解器上的所有输出引脚并渲染它们。调整您选择的频率(put_TuneRequest)。

此时一切都准备好运行图表,但不要运行它!
枚举图表中的所有过滤器。断开除 Microsoft DVBT网络提供商 You_Name_It BDA DVBT调谐器 You_Name_It BDA数字捕捉之外的所有过滤器。

全部删除除了 MPEG-2多路分解器之外,这些从图中断开的滤波器(它必须在图中,尽管它没有连接)。添加 Sample Grabber 过滤器和 NULL Renderer 过滤器。将数字捕捉滤波器连接到采样采集器采样采集器连接到 NULL渲染器。您现在可以运行图表。通过Sample Grabber过滤器中的回调,您将收到整个MUX。当然,仍然有一些工作可以分解数据,但是一旦你这样做,你就可以一次捕获一个MUX中的所有电视节目。最简单的方法是以TS格式捕获它,因为正在广播TS(188字节长数据包)。

答案 1 :(得分:2)

在我看来,VLC有BDA支持(BDA.c file reference),也许你可以从他们的代码中窥探一些东西?

答案 2 :(得分:1)

您的问题没有简单的答案。我已经开始了一个这样的项目,并且发现我对此知之甚少,所以这里的研究很少。

首先,您必须了解dvb-t调谐器卡或棒不能提供传统意义上的视频帧,但解码是在cpu上的pc中完成的。外部卡仅为您提供压缩数据,因为它从空中获取。

下一步 - 发送给您的数据将采用MPEG2或MPEG4传输流格式。适用于流式传输或广播,不适用于保存到文件。 VLC能够播放写入文件的TS,但要录制正确的视频文件,您必须对文件进行转码或将其重新打包到节目流。谷歌一点点,你会发现差异。

更多 - 空中一个频率由多个频道组成,频道打包称为“多路复用”。所以 - 从BDA调谐器/捕获器你将获得所有数据,你必须手动解复用它或让BDA解复用器为你做。

希望有足够的信息让你入门,当我到真正的键盘时,我可以给你发一些有趣的链接。