0

我是 DirectShow 的新手。我有一个 ASI/SDI Dectek 设备、DTU-225 和一个相关的 sdk: http: //www.dektec.com/products/USB2/DTU-225/index.asp。在这个 sdk 中有一个 Directshow 过滤器。我需要将此过滤器生成的输出传递给 ffmpeg、mencoder o vlc 以便进一步实时处理(无需创建中间文件)。我怎样才能做到这一点?对于 SDI 接口,滤波器的输出引脚细节如下:

类型1

  • 主要类型:MEDIATYPE_Video
  • 子类型:MEDIASUBTYPE_UYVY
  • 格式类型:FORMAT_VIDEOINFO2

类型2

  • MEDIATYPE_视频
  • MEDIASUBTYPE_UYVY
  • FORMAT_VideoInfo

我认为使用 DirectShow 会更舒服,因为下一步将是:不要在 SDI 模式下而是在 DVB-ASI 模式下,mpeg2-transport 流中做同样的事情;所以我必须解析流并提取不同的PID。我认为 DirectShow 会在这个过程中帮助我。也许。谢谢你。

4

3 回答 3

1

ffmpeg can accept "dshow" input

ffmpeg/ffplay can also accept avisynth input, avisynth can accept graphedit files as input, you can add your filters into a graphedit file and play that. This is the only way to capture "non source" filters.

于 2011-08-05T00:35:57.717 回答
1

Windows vlc 将从 DirectShow 过滤器中捕获。请参阅下面的链接。在我的 Windows 系统上工作正常,从内置的网络摄像头和麦克风捕获。从打开的捕获设备对话框中,您可以选择“显示更多选项”以查看您可以在 vlc 命令行上使用的选项来打开该捕获设备和流/转码等。

http://www.videolan.org/doc/play-howto/en/ch03.html

我系统上的基本 DirectShow 输入选项如下所示:

:dshow-vdev=USB 视频设备 :dshow-adev=麦克风(Realtek 高清) :dshow-caching=200

我对 vlc 知之甚少,也没有设法从命令行使它工作。有一些令人担忧的报告称无法从命令行使用名称中带有空格的 DirectShow 设备,但可能存在变通方法。

http://trac.videolan.org/vlc/ticket/1654

如果您准备进行一些 DirectShow 编程或改用 Windows Media Player,那么 DirectShow 中提供了无数种视频处理选项。请参阅 DirectShow 上的 Wikipedia 页面以获取概述。

另一种选择是为 vlc、ffmpeg 或 mencode 编写一个插件,直接与 DirectShow 对话以从您的设备的过滤器中获取数据,尽管它不像使用 vlc 的 DirectShow 输入那么简单。

于 2011-04-13T11:44:34.647 回答
0

只需使用 ffdshow,这是 DirectShow 过滤器形式的 ffmpeg。

于 2011-04-19T10:34:56.747 回答