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

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

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

No.90969 の関連記事表示

<< 0 >>
■90969  埋め込みリソースのファイルパスを取得するには?
□投稿者/ boryo -(2019/05/15(Wed) 12:18:03)

    分類:[.NET 全般] 

    http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=2323

    10年以上前の古い記事ですが
    このページと全く同じ質問です。


    VBを使っており、
    https://dobon.net/vb/dotnet/programing/playmidifile.html
    mciSendString関数を使って、
    埋め込みリソースのMP3を再生したいと考えています。

    ストリームとして読み込むには
    myAssembly.GetManifestResourceStream("WindowsApplication1.xxx.wav")

    が使えますが、
    ファイルパスとして読み込むにはどうしたら良いですか?

    最新のバージョンでも
    この一時ファイルとして出力する方法を使うしかないのでしょうか?


親記事 /過去ログ157より / 関連記事表示
削除チェック/

■90970  Re[1]: 埋め込みリソースのファイルパスを取得するには?
□投稿者/ Hongliang -(2019/05/15(Wed) 12:39:45)
    MCIを使う限りは、一時ファイルにするしかありません。
    最新バージョンも何も、MCIはずいぶん昔から更新されていないはずですし。

    異なる音楽再生ライブラリにはメモリから読み込むことができるものもあります。
    例えば、NuGetから参照できるNAudioなど。
記事No.90969 のレス /過去ログ157より / 関連記事表示
削除チェック/

■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より / 関連記事表示
削除チェック/

■90974  Re[2]: 埋め込みリソースのファイルパスを取得するには?
□投稿者/ 魔界の仮面弁士 -(2019/05/15(Wed) 14:16:07)
記事No.90969 のレス /過去ログ157より / 関連記事表示
削除チェック/

■90980  Re[3]: 埋め込みリソースのファイルパスを取得するには?
□投稿者/ boryo -(2019/05/15(Wed) 14:54:00)
    ありがとうございます。

    MP3にこだわってはおらず、
    音量を調整できる機能を必要としています。

    System.Media.SoundPlayer
    の方法だと簡単なコードでは音量調節できないようだったので、
    別の方法を模索していました。

    My.Computer.Audio.Play メソッドやPlaySound API
    だと音量調節可能でしょうか?

記事No.90969 のレス /過去ログ157より / 関連記事表示
削除チェック/

■90981  Re[4]: 埋め込みリソースのファイルパスを取得するには?
□投稿者/ 魔界の仮面弁士 -(2019/05/15(Wed) 15:07:57)
記事No.90969 のレス /過去ログ157より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -