2012-01-07 10 views
4

前提は:C#.NetとDirectX(包括的な分析)を使用してオーディオビデオ再生エンジンを作成する方法は?

私は放送ソリューション企業のために働くと私たちは外部のベンダーからプレイアウトSDKを購入し、これは、文字のような多数の機能を提供してくれるなど、映像負荷、レンダリング、遊び、私たちの負担を軽減します画像、テキスト、フラッシュ(* .swf)ファイル、ストリーミングなどをオーバーレイするアプリケーション開発(技術開発ではなく)に集中しています。だから私たちは、C#コードからplay、pause、seak、overlayなどのSDK DLLへの簡単なAPIコールを作成し、私たちの生活を楽にします。

また、sdkは他国のサードパーティによって提供されているため、サポートの質はそれらによって異なります。また、彼らが行った機能の追加は一般的な性質であり、2週間ごとに新しいリリースを提供します。そのコードには多くのバグがあります。私たちはまた、完全な製品を購入したときでも、ライセンス問題に直面しています。


要件:

  1. 私たちは、レンダリングエンジン/私たち自身のプレイアウトを書くのオプションを評価したい - 最低限の機能を持ち、最初はなく、長期的には我々は次のようにそこに多くの機能を追加します画像やテキスト、フラッシュのswfファイルのオーバーレイ、早送りなどを行うことができます。
  2. また、ハードウェアデバイスからのライブ入力フィードをハードウェアデバイス経由でTvに送り、ライブフィードをディスクに記録します。ライブ入力とローカルに保存されたビデオファイルを切り替えます。
  3. すべての種類の動画(クイックタイム、mp4、flvなど)を再生する必要があるため、サードパーティのコーデックにも依存します。
  4. 入力と出力に異なるハードウェアカードを使用することができます。使用可能なハードウェア構成を反復して取得する必要があります。
  5. 私たちはC#を開発しており、現在C++のエキスパートがいないため、開発にC++を使用することは望ましくありません。

質問:

  1. 我々のアプローチをすべきか - 私たちは(それが正しい方法や他のいくつかのより良い方法純粋なC#とDirectX 11を使用して上記の機能を備えたプレイアウトで書くことができます存在する)?
  2. 同じことを達成するのが簡単かどうか(主観的な質問です - 主観的な答えで十分でしょう)?
  3. よく書かれたC#コードは、C++コード(NTSC規格では1秒間に最大30ビデオフレームを配信する必要があるDirectXおよびメディア再生に関して)よりも遅いのですか?
  4. (コンセプトとコーディングを含む)それを開始する良い方法(リソース)とは何ですか?

包括的な質問ですが、専門家のアドバイスは私の指示と進歩を容易にするでしょう。

+0

親愛なる専門家 質問のフォーマットを変更するか、質問の詳細を追加/削除する必要がありますか? 2日以内に返信が届きません。 お勧めします。 – akshaymishra14

+0

これはオープンエンドの質問であり、ソフトウェアとハ​​ードウェアの両方を含むターンキーソリューションが適切かもしれません。これをC#/ .NETを使用して構築する場合は、DirectShowを使用できます。また、あなたの決定は、コーデック、ドライバ、フィルタの可用性によっても影響を受ける可能性があります。 –

+0

全体的に、C#は、セットアップ、再生の開始と停止、ユーザーイベント処理などのような制御タスクを実行するのに十分なはずです。リアルタイムのオーディオやビデオ処理を実行することは適切ではないかもしれません。 –

答えて

1

私はC#と.NETを使用して3Dテレビグラフィックスシステムを構築したプロジェクトで作業していましたが、これは間違いなく可能です。C#とDX 11(SlimDXは)間違いなく仕事を得ることができ、あなたの特定の質問、

  1. に答えるために

    、私はDX 9とはるかに少ないことが可能であったハードウェアでこれを行っています。

  2. ごみを発生させないように(GCはグラフィカルなトラブルを作り出します)、アニメーションのための非常にデータ駆動型のアプローチ(私たちはテンプレートと呼ばれます)を取って問題にアプローチすると、私が指している道を見てください。
  3. はい、C#コードでオーバーヘッドのマーシャリングが行われますが、DXへの呼び出し回数を減らして、渡すデータ量を減らすことで、このコストを削減できます。
  4. 回答#2を参照してください。

1

私はMS Expression Encoder SDKで作業することをお勧めします。非常に使いやすく、非常に便利なサンプルコードがあります。

DirectShowでの作業を主張する場合は、DirectShow port to .NETが有効です。ここにはtutorialがあり、それを操作する方法を示しています。

関連する問題