我需要构建一个非常简单的流媒体服务器。它需要能够从设备捕获视频,然后通过组播将该视频流式传输到 LAN 上的多个客户端。
由于有人用 DirectShow.Net 编写的库( http://www.codeproject.com/KB/directx/directxcapture.aspx ),捕获部分非常简单(在 C# 中)。
我现在的问题是如何多播?这是我坚持的部分。我不确定下一步该做什么,或者采取什么步骤。
最佳答案
没有可供您即插即用的过滤器。
您需要在这里做三件事:
- 将视频压缩为 MPEG2 或 MPEG4
- 将其复用至 MPEG 传输流
- 广播
第 1 部分有很多可用的编解码器,有些设备甚至可以输出压缩视频。
第 3 部分也非常简单。
主要问题出在第 2 部分,因为 MPEG 传输流已获得专利。它已获得许可,因此您无法基于它开发自由软件(VLC 和 FFMPEG 违反了该许可),并且您必须支付数百美元才能获得规范的副本。
如果您必须开发它,您需要:
- 获取 ISO/IEC 13818-1-2000 的副本(您可以从其网站下载 PDF 版本),它描述了 MPEG 传输流
- 开发一个渲染器过滤器,采用 MPEG 基本流并将其复用到传输流中
它必须是渲染器,因为传输流不是转换过滤器。有一些带外数据(程序分配表和引用时钟)需要定期发送,您需要保留一个工作线程来执行此操作。
关于c# - 如何多播 DirectShow 捕获的流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361220/