c# - 如何多播 DirectShow 捕获的流?

标签 c# video streaming directshow multicast

我需要构建一个非常简单的流媒体服务器。它需要能够从设备捕获视频,然后通过组播将该视频流式传输到 LAN 上的多个客户端。

由于有人用 DirectShow.Net 编写的库( http://www.codeproject.com/KB/directx/directxcapture.aspx ),捕获部分非常简单(在 C# 中)。

我现在的问题是如何多播?这是我坚持的部分。我不确定下一步该做什么,或者采取什么步骤。

最佳答案

没有可供您即插即用的过滤器。

您需要在这里做三件事:

  1. 将视频压缩为 MPEG2 或 MPEG4
  2. 将其复用至 MPEG 传输流
  3. 广播

第 1 部分有很多可用的编解码器,有些设备甚至可以输出压缩视频。

第 3 部分也非常简单。

主要问题出在第 2 部分,因为 MPEG 传输流已获得专利。它已获得许可,因此您无法基于它开发自由软件(VLC 和 FFMPEG 违反了该许可),并且您必须支付数百美元才能获得规范的副本。

如果您必须开发它,您需要:

  • 获取 ISO/IEC 13818-1-2000 的副本(您可以从其网站下载 PDF 版本),它描述了 MPEG 传输流
  • 开发一个渲染器过滤器,采用 MPEG 基本流并将其复用到传输流中

它必须是渲染器,因为传输流不是转换过滤器。有一些带外数据(程序分配表和引用时钟)需要定期发送,您需要保留一个工作线程来执行此操作。

关于c# - 如何多播 DirectShow 捕获的流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361220/

相关文章:

video - 谁能帮助理解 AVFrame.linesize[]?

java - 将客户端 REQUEST_ENTITY_PROCESSING 设置为 CHUNKED 我丢失了文件

node.js - 跨设备编码静态文件以使用 FFMPEG 在浏览器中流式传输(分段的 h264?)

c# - 拆分字符串错误 : cannot convert from string to char

c# - 自动调用 Controller 方法并生成局部 View 。如何?

c# - 如何使用 Automapper 完成以下映射?

ffmpeg - mp4 流可以使用 ffserver 吗?

c# - 与 Windows 命名管道 (.Net) 的异步双向通信

javascript - Wistia 视频自定义 Action

ios - YouTube : This video contains content from vevo?