web-dev-qa-db-ja.com

リソースからWAVオーディオファイルを再生するには?

プロジェクトのリソースからWAVオーディオファイルを再生するにはどうすればよいですか?私のプロジェクトは、C#のWindowsフォームアプリケーションです。

36
Genius
  Stream str = Properties.Resources.mySoundFile;
  RecordPlayer rp = new RecordPlayer();
  rp.Open(new WaveReader(str));
  rp.Play();

FromC#のリソースからWAVオーディオファイルを再生する方法

7
Aleks

mySoundFileStreamなので、SoundPlayerのオーバーロードされたコンストラクタを利用できます。これは、Streamオブジェクトを受け入れます。

System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();

SoundPlayer Class Documentation(MSDN)

46
Evan Mulawski

a)OK、最初にオーディオファイル(.wav)をプロジェクトリソースに追加します。

  1. メニューツールバー([表示])から[ソリューションエクスプローラー]を開くか、単にCtrl + Alt + Lを押します。
  2. [プロパティ]のドロップダウンリストをクリックします。
  3. 次に、「Resource.resx」を選択してEnterキーを押します。

open project resource

  1. 次に、コンボボックスリストから[オーディオ]を選択します。

add audio files to resource

  1. [リソースの追加]をクリックし、オーディオファイル(.wav)を選択して、[開く]をクリックします。

browsing for audio files

  1. オーディオファイルを選択し、「永続性」プロパティを「.resxに埋め込み」に変更します。

embedding audio files to resource

b)さて、オーディオを再生するにはこのコードを書いてください。

このコードでは、フォームロードイベントでオーディオを再生しています。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Media; // at first you've to import this package to access SoundPlayer

namespace WindowsFormsApplication1
{
    public partial class login : Form
    {
        public login()
        {
            InitializeComponent();
        }

        private void login_Load(object sender, EventArgs e)
        {
            playaudio(); // calling the function
        }

        private void playaudio() // defining the function
        {
            SoundPlayer audio = new SoundPlayer(WindowsFormsApplication1.Properties.Resources.Connect); // here WindowsFormsApplication1 is the namespace and Connect is the audio file name
            audio.Play();
        }
    }
}

それでおしまい。
すべて完了したら、プロジェクトを実行し(f5キーを押します)、サウンドをお楽しみください。
ではごきげんよう。 :)

44
Pran

サウンドの再生中は、ガベージコレクターがサウンドで使用するメモリを解放することに注意する必要があります。まれにしか発生しませんが、発生した場合は、ランダムメモリを再生します。これに対する解決策があり、ここで必要なことを達成するためのソースコードを完備しています: http://msdn.Microsoft.com/en-us/library/dd743680(VS.85).aspx

「コミュニティコンテンツ」セクションの一番下までスクロールします。

2
Brad

私が知る限り、これを行うには2つの方法があります。以下にリストします。

  1. ファイルパスを使用

最初にファイルをプロジェクトのルートフォルダーに配置してから、プログラムをDebugまたはReleaseモードで実行しても、両方のファイルに確実にアクセスできます。次に、クラスSoundPlayerを使用してそれを渡します。
しかし、この方法では、プロジェクトをユーザーにリリースする場合、「bin」ディレクトリの下の「Release」フォルダの階層を除く、そのフォルダ階層でサウンドファイルをコピーする必要があります。

        var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
        SoundPlayer player = new SoundPlayer();
        player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
        player.Load();
        player.Play();
  1. リソースを使用

以下のアニメーションに従って、「Exsiting file」をプロジェクトに追加します。

enter image description here

        SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
        player.Play();

この方法の長所は次のとおりです。
プログラムの実行時にコピーする必要があるのは、「bin」ディレクトリの下の「Release」フォルダのみです。

0
Bravo Yeung

プロジェクトにサウンドを追加する必要がある場合は、_.wav_ファイルを再生して追加します。次に、このような_.wav_ファイルを追加する必要があります。

_   using System.Media; //write this at the top of the code

   SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav");
   my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish
_

フォワードスラッシュ(_/_)形式でファイルのパスを記述する必要があることに注意してください。バックスラッシュ(_\_)は使用しないでください。ファイルへのパスを指定すると、エラーが発生します。

また、サウンドの再生中に他のことを実行したい場合は、my_wave_file.PlaySync();my_wave_file.PlayAsync();で変更できます。

0
Pir Fahim Shah

次の2行で実行できます。

SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);     
                sound.Play(); 
0