none
DirectShow暗号化したままメディア再生(AVI)したい RRS feed

  • 質問

  • ただいま、AVIを外付けのハードディスクにいれて、暗号化したまま再生し、コピーガードのような役割をさせたいと思っています。
    ですが、暗号化を複合するのに大変時間がかかり、とても使い物になりません。
    AVIファイルは最高で、1時間30分程度の大きさがあります。

    できれば暗号化したまま再生ができればいいのですが、どのようにしたらよろしいでしょうか?

    現在の環境はVB2008、XPでの開発です。

    プログラムの方法は、DirectShowでの簡単な再生、暗号化はDESクラスを使用しています。
    2009年6月3日 0:40

回答

すべての返信

  • 「暗号化したまま再生」を実現するために求められることは、「簡単な再生」というレベルでは実現が困難だと思います。
    とりあえず、考えたこととして記載しています。具体的な手法まではご勘弁下さい。


    リアルタイムに復号して再生するためには、復号処理が十分高速であるという条件が必要ですし、ファイルに落とさないとなると仮想的なストレージか、DirectShowのフィルタを作ることになるのではないでしょうか。

    また、単純にDirectShowのフィルタとしてしまうと、自分のプレイヤー以外でも復号できる状態になりますので、どうやって自分のプレイヤーだけで復号できるようにするか等、検討する必要が出てきます。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月3日 14:05
    モデレータ
  • ご返信ありがとうございます。
    MVPさまのご指摘どおりDirectShowでのフィルタ開発を行おうとおもいます。


    ですが、DirectShowのフィルタ開発を行ったことがありませんので、まったく手法がわからない状態です。
    ヘルプも参照したのですが、資料が見当たらない状態でした。

    フィルタに、ストリームバッファを与えて再生できればと思ったのですが・・・

    どなたかご教授いただけないでしょうか?
    お願いします。

    2009年6月4日 10:39
  • すみません Azuleanさまでした。
    • 回答としてマーク omotemari 2009年6月6日 6:04
    2009年6月4日 10:40
  • Source Filterを書くことになるのかな?
    申し訳ありませんが、自信がありません。

    Windows SDKに含まれるDirectShowのフィルタサンプルを読んでみて下さい。
    http://msdn.microsoft.com/en-us/library/dd317573(VS.85).aspx



    ところで、ファイルから読み出して、復号した時の動画のフォーマットは何になるんでしょうか?
    Source Filterを書くとして、自分で展開可能ですか?
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月4日 13:46
    モデレータ
  • 動画のフォーマットは"avi"になります。
    すみません展開は自信がありません。展開ということ自身わかりかねています。

    グラフマネージャーでグラフを作るときは、すごく早いので、複合化も早くできたらいいのですが・・・

    それであればSource Filterを作ることもなくなるのですが・・・
    2009年6月5日 2:45
  • 現状はどうなっているのでしょう。以下は想像ですが、
    AVI ファイル全体を DESCryptoServiceProvider と CryptoStream を使って暗号化し、
    再生時に全体を復号して一時的なファイルに保存し、それを再生しているのでしょうか。
    その場合、仮にソース フィルタを自作するにしても、
    CryptoStream はシークできませんので問題がありそうです。

    そもそも VB でフィルタを作る事が可能かどうか、私には分かりません。
    でもレジストリに登録されているような既存のフィルタでは、
    ご所望の動作は無理だと思います。やはり自作しなければならないと思います。


    virtual void
    2009年6月5日 10:38

  • >現状はどうなっているのでしょう。以下は想像ですが、
    >AVI ファイル全体を DESCryptoServiceProvider と CryptoStream を使って暗号化し、
    >再生時に全体を復号して一時的なファイルに保存し、それを再生しているのでしょうか。
    おっしゃるとおりです。

    >でもレジストリに登録されているような既存のフィルタでは、
    >ご所望の動作は無理だと思います。やはり自作しなければならないと思います。
    そうなのですね。
    もっとフィルタのことについて勉強をして実装してみます。


    Azuleanさま Abstraktさま、ためになりました。ありがとうございました。
    2009年6月6日 6:07