【问题标题】:How to write a audio - video playout engine using C#.Net and DirectX (comprehensive analysis)?如何使用 C#.Net 和 DirectX 编写音视频播放引擎(综合分析)?
【发布时间】:2012-01-07 14:40:26
【问题描述】:

前提:

我在一家广播解决方案公司工作,我们从外部供应商那里购买了 playout sdk,这减轻了我们的视频加载、渲染、播放等负担。它为我们提供了许多功能,例如字符生成器、叠加图像、文本、 flash (*.swf) 文件、流媒体等。我们主要关注应用程序开发(而不是技术开发)。因此,我们从 C# 代码对 SDK DLL 进行简单的 API 调用,如播放、暂停、搜索、叠加等,这让我们的生活变得轻松。

同时我们也面临一些问题,因为 sdk 是由另一个国家的第三方提供的,因此支持的质量取决于他们。此外,他们所做的功能添加是通用的,他们每两周发布一个新版本。他们的代码有很多错误。即使我们购买了他们的完整产品,我们也会面临许可问题。


要求:

  1. 我们想要评估编写我们自己的播放/渲染引擎的选项 - 最初只有最低限度的功能,但从长远来看,我们会为其添加更多功能,例如覆盖图像或文本或 flash swf 文件、搜索、快进等。
  2. 我们还从硬件设备获取实时输入馈送,并通过硬件设备将视频馈送发送到电视,并将实时馈送记录在磁盘上。我们在实时输入和本地存储的视频文件之间切换。
  3. 我们需要播放各种视频(quick time、mp4、flv 等),因此我们还将依赖 3rd 方编解码器。
  4. 我们可以使用不同的硬件卡进行输入和输出,需要迭代并获得可用的硬件配置。
  5. 我们从事 C# 工作,我们有经验丰富的 C# 开发人员,我们不想使用 C++ 进行开发,因为我们公司目前没有 C++ 专家。

问题:

  1. 我们的方法应该是什么 - 我们能否使用纯 C# 和 DirectX 11 编写具有上述功能的播放(这是正确的方法还是存在其他更好的方法)?
  2. 实现相同目标的难易程度(这是一个主观问题 - 主观回答就足够了)?
  3. 编写良好的 C# 代码是否比 C++ 代码慢(在 DirectX 和媒体播放方面,我可能需要为 NTSC 标准提供高达每秒 30 帧的视频帧)?
  4. 什么是启动它的好方法(资源)(包括概念和编码)?

这是一个综合性问题,但您的专家建议将使我的方向和进步变得容易。

【问题讨论】:

  • 尊敬的专家 我是否需要更改问题的格式或添加/删除问题的详细信息?我在 2 天内没有收到任何回复。请提出建议。
  • 这是一个非常开放的问题,可能包括软件和硬件的交钥匙解决方案可能更合适。如果要使用 C#/.NET 构建,则可以使用 DirectShow。此外,您的决定可能会受到编解码器、驱动程序、过滤器的可用性的影响。
  • 总的来说,C# 足以执行控制任务,例如设置、开始和停止播放、用户事件处理等。它可能不适合执行实时音频或视频处理。
  • @Dmitry Shkuropatsky:谢谢

标签: c# audio video directx


【解决方案1】:

我曾参与过一个使用 C# 和 .NET 构建 3D 电视图形系统的项目,我不得不说是的,这绝对是可能的。

要回答您的具体问题,

  1. C# 和 DX 11 (SlimDX) 绝对可以完成这项工作,我已经使用 DX 9 和功能低得多的硬件完成了这项工作。
  2. 我想说,如果您要从产生很少甚至不产生垃圾的观点来解决问题(GC 会产生图形打嗝)并为动画采用非常数据驱动的方法(我们称它们为模板),您将看看我指的路。
  3. 是的,C# 代码有封送处理开销,但可以通过减少调用 DX 的次数和减少传递给它的数据量来降低成本。
  4. 参见答案 #2

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    我建议使用MS Expression Encoder SDK - 非常非常易于使用,有一个非常有用的示例代码。

    如果您坚持使用 DirectShow,那么有一个 DirectShow port to .NET 可以很好地工作。这是一个tutorial,展示了如何使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      相关资源
      最近更新 更多