C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.90973 の関連記事表示

<< 0 >>
■90973  Re[1]: 埋め込みリソースのファイルパスを取得するには?
□投稿者/ 魔界の仮面弁士 -(2019/05/15(Wed) 14:03:45)
    No90969 (boryo さん) に返信
    > 埋め込みリソースのMP3を再生したいと考えています。

    MP3 形式に拘らないのであれば、WAV 形式を採用したほうがお手軽です。
    これならば、リソースやメモリーからの読み取りも可能です。

    VB なら My.Computer.Audio.Play メソッドを通じて簡単に再生できますし、
    C# などからでも、PlaySound API でメモリ上からの再生が可能です。


    > この一時ファイルとして出力する方法を使うしかないのでしょうか?

    メモリ上のデータを MCI で再生する方法は、サポート技術情報 155360 の
    『SDK32:MCI を使って AVI/WAVE ファイルをメモリ上で演奏する』
    として公開されていました。VB 向けの記事では無いですけれどね。

    上記のオンラインでの公開はすでに終了しているようですが、
     https://www.microsoft.com/ja-jp/download/details.aspx?id=20955
    で提供されているオフライン リファレンスをダウンロードすれば、
     ms-help://MS.MSDNQTR.v90.ja/ja_kbwin32sdk/win32sdk/155360.htm
    のアドレスにて引き続き閲覧できます。


    試したことは無いので保証は出来かねますが、ざっくり書くとこんな感じでしょうか。


    (1) 3 文字の半角大文字で構成される未知の拡張子、たとえば "BRY" を用意しておきます。

    (2) それを mmioFOURCC("B"c, "R"c, "Y"c, " "c) として
     32bit 整数な FOURCC (Four-character code) に変換しておきます。

    (3) MCI の OPEN コマンドにて、"OPEN TEST.BRY+ TYPE MPEGVideo ALIAS EXAMPLE" のように、
     拡張子の後ろに "+" を付与しておきます。
     + がついている場合、mmioOpen はファイルをオープンせず、かわりに
     カスタム入出力プロシージャを通るようになります。

    (4) mmioInstallIOProc API で、(2) の FOURCC を指定して、コールバック先となる
     カスタム入出力プロシージャのデリゲートを渡しておきます。
     mmioInstallIOProc(FOURCC, New IOProcDelegate(AddressOf IOProc), MMIO_INSTALLPROC Or MMIO_GLOBALPROC)

    (5) 上記で渡したコールバックメソッドにて、第 2 引数が MMIOM_READ だった時に、
     オーディオデータを、台を lParam1 の IntPtr に対して書き込めば OK です。
     データ位置は第 1 引数(LPMMIOINFO) の .lDiskOffset で示されるので、
     メソッドを Return する前に、lDiskOffset を更新しておく必要があります。


    mmioInstallIOProc を用いた C++ な実装例が下記にあります。
    http://mrkk.ciao.jp/memorandom/aviplaybackfrommemory/step1_mci.html
記事No.90969 のレス /過去ログ157より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -