如何使用C#.Net和DirectX(综合分析)编写音频 – 视频播出引擎?

前提:

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

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

要求 :

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

问题:

>我们的方法应该是什么 – 我们可以使用纯C#和DirectX 11编写一个带有上述功能的播出(是正确的方式还是其他更好的方式)?
>实现同样的目标是多么容易或困难(这是一个主观问题 – 一个主观的答案就足够了)?
>编写良好的C#代码是否比C代码慢(关于DirectX和媒体播放,我可能需要为NTSC标准每秒提供多达30个视频帧)?
>启动它的好方法(资源)是什么(包括概念和编码)?

这是一个全面的问题,但您的专家建议将使我的方向和进展变得容易.

最佳答案 在我使用C#和.NET构建3D电视图形系统的项目上,我不得不说是的,这绝对是可能的.

要回答您的具体问题,

> C#和DX 11(SlimDX)绝对可以完成工作,我使用DX 9和功能较差的硬件完成了这项工作.
>我会说,如果你要解决问题的方法是生成很少甚至没有垃圾(GC产生图形打嗝)并采用非常数据驱动的方法制作动画(我们称之为模板),你会看到道路我指着.
>是的,C#代码具有编组开销,但可以通过减少对DX进行的调用次数和减少传入其中的数据量来降低成本.
>见答案#2

希望这可以帮助!

点赞