【发布时间】:2012-01-07 14:40:26
【问题描述】:
前提:
我在一家广播解决方案公司工作,我们从外部供应商那里购买了 playout sdk,这减轻了我们的视频加载、渲染、播放等负担。它为我们提供了许多功能,例如字符生成器、叠加图像、文本、 flash (*.swf) 文件、流媒体等。我们主要关注应用程序开发(而不是技术开发)。因此,我们从 C# 代码对 SDK DLL 进行简单的 API 调用,如播放、暂停、搜索、叠加等,这让我们的生活变得轻松。
同时我们也面临一些问题,因为 sdk 是由另一个国家的第三方提供的,因此支持的质量取决于他们。此外,他们所做的功能添加是通用的,他们每两周发布一个新版本。他们的代码有很多错误。即使我们购买了他们的完整产品,我们也会面临许可问题。
要求:
- 我们想要评估编写我们自己的播放/渲染引擎的选项 - 最初只有最低限度的功能,但从长远来看,我们会为其添加更多功能,例如覆盖图像或文本或 flash swf 文件、搜索、快进等。
- 我们还从硬件设备获取实时输入馈送,并通过硬件设备将视频馈送发送到电视,并将实时馈送记录在磁盘上。我们在实时输入和本地存储的视频文件之间切换。
- 我们需要播放各种视频(quick time、mp4、flv 等),因此我们还将依赖 3rd 方编解码器。
- 我们可以使用不同的硬件卡进行输入和输出,需要迭代并获得可用的硬件配置。
- 我们从事 C# 工作,我们有经验丰富的 C# 开发人员,我们不想使用 C++ 进行开发,因为我们公司目前没有 C++ 专家。
问题:
- 我们的方法应该是什么 - 我们能否使用纯 C# 和 DirectX 11 编写具有上述功能的播放(这是正确的方法还是存在其他更好的方法)?
- 实现相同目标的难易程度(这是一个主观问题 - 主观回答就足够了)?
- 编写良好的 C# 代码是否比 C++ 代码慢(在 DirectX 和媒体播放方面,我可能需要为 NTSC 标准提供高达每秒 30 帧的视频帧)?
- 什么是启动它的好方法(资源)(包括概念和编码)?
这是一个综合性问题,但您的专家建议将使我的方向和进步变得容易。
【问题讨论】:
-
尊敬的专家 我是否需要更改问题的格式或添加/删除问题的详细信息?我在 2 天内没有收到任何回复。请提出建议。
-
这是一个非常开放的问题,可能包括软件和硬件的交钥匙解决方案可能更合适。如果要使用 C#/.NET 构建,则可以使用 DirectShow。此外,您的决定可能会受到编解码器、驱动程序、过滤器的可用性的影响。
-
总的来说,C# 足以执行控制任务,例如设置、开始和停止播放、用户事件处理等。它可能不适合执行实时音频或视频处理。
-
@Dmitry Shkuropatsky:谢谢