8

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

我尝试在许多示例项目中进行搜索,但这些是为视频输入制作的,而不是带有 BDA(广播驱动程序架构)接口的 dvb-t 棒。

帮助!

4

3 回答 3

4

真的不知道“电影文件”到底是什么意思,但我可以告诉你如何捕获整个 MUX(传输流)。使用Microsoft DVBT Network ProviderYou_Name_It BDA DVBT TunerYou_Name_It BDA Digital CaptureMPEG-2

Demultiplexer 过滤器 创建图表。连接它们后,枚举MPEG-2 Demultiplexer上的所有输出引脚并渲染它们。调整您选择的频率 (put_TuneRequest)。此时一切都已准备好运行图表,但不要运行它!枚举图中的所有过滤器。断开除Microsoft DVBT Network ProviderYou_Name_It BDA DVBT Tuner之外的所有过滤器



You_Name_It BDA 数字采集

从图中删除所有这些断开的过滤器,除了MPEG-2 Demultiplexer(它必须在图中,尽管它没有连接)。添加Sample Grabber过滤器和NULL Renderer过滤器。将Digital Capture过滤器连接到Sample Grabber,将Sample Grabber连接到NULL Renderer. 您现在可以运行图表。通过 Sample Grabber 过滤器中的回调,您将收到整个 MUX。当然,对数据进行解复用还有一些工作,但是一旦这样做,您就可以一次在一个 MUX 中捕获所有电视节目。最简单的方法是以 TS 格式捕获它,因为 TS 正在广播(188 字节长的数据包)。

于 2010-12-06T07:49:04.233 回答
2

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

于 2010-12-02T23:08:57.090 回答
1

你的问题没有简单的答案。我已经开始了一个这样的项目,发现我对它知之甚少,所以这里是我研究的一些东西。

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

接下来 - 交付给您的数据将采用 MPEG2 或 MPEG4 传输流格式。适合流式传输或广播,不适合保存到文件。VLC 能够播放写入文件的 TS,但要录制正确的视频文件,您必须对文件进行转码或将其重新打包到 Program Stream。谷歌一下,你会发现不同之处。

更多 - 广播中的一个频率由许多通道组成,该通道封装称为“多路复用器”。所以 - 从 BDA 调谐器/捕获器中,您将获得所有数据,您必须手动解复用它或让 BDA 解复用器为您完成。

希望这些信息足以让您入门,当我使用真正的键盘时,我可以向您发布一些有趣的链接。

于 2010-12-06T07:32:47.267 回答