自分用にWindowsフォームアプリケーションでデスクトップの英単語帳を作成しようと思っており、その中に音声の再生をする機能を付けたいと思っています。
音声をひとつひとつ作成したりダウンロードするのは無理なので下のような↓ 英単語サイトの音をそのまま再生できるのか、またその方法を教えて頂きたいです。使用言語はC#です。よろしくお願いします。
回答をヒントに解決したので詳細を残します。
ボタンをクリックするとサウンドが再生されるようにしました。MP3ファイルとwaveファイルを再生させる2種類の方法です。現時点では連続再生させるとエラーが出ていますが、そのまま書いています。
waveファイルを再生させる場合のスクリプトと回答以外に参考としたサイト↓
方法:Windowsフォーム内でサウンドを非同期的に読み込む
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Media; 8using System.Text; 9using System.Threading.Tasks; 10using System.Windows.Forms; 11using System.Net; 12using System.IO; 13 14namespace WordBook 15{ 16 17 public partial class Home : Form 18 { 19 public Home() 20 { 21 InitializeComponent(); 22 this.Player.LoadCompleted += new AsyncCompletedEventHandler(Player_LoadCompleted); 23 } 24 25 SoundPlayer Player = new SoundPlayer(); 26 //ボタンクリックでサウンド実行 27 private void button2_Click(object sender, EventArgs e) 28 { 29 this.LoadAsyncSound(); 30 } 31 //サウンドの取得と読み込み 32 public void LoadAsyncSound() 33 { 34 try 35 { 36 //音源先のURLを指定(右クリックして「リンクのアドレスをコピー」) 37 this.Player.SoundLocation = "https://maoudamashii.jokersounds.com/music/se/wav/se_maoudamashii_chime14.wav"; 38 this.Player.LoadAsync(); 39 } 40 catch (Exception ex) 41 { 42 MessageBox.Show(ex.Message, "Error loading sound"); 43 } 44 } 45 // サウンドの再生 46 void Player_LoadCompleted(object sender, AsyncCompletedEventArgs e) 47 { 48 if (Player.IsLoadCompleted) 49 { 50 try 51 { 52 this.Player.Play(); 53 } 54 catch (Exception ex) 55 { 56 MessageBox.Show(ex.Message, "Error playing sound"); 57 } 58 } 59 } 60 } 61}
Mp3ファイルは上記方法で再生ができなかったので、下記方法で再生する↓
MIDI,MP3などの音楽ファイルを再生する
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Media; 8using System.Text; 9using System.Threading.Tasks; 10using System.Windows.Forms; 11using System.Net; 12using System.IO; 13 14namespace WordBook 15{ 16 17 public partial class Home : Form 18 { 19 [System.Runtime.InteropServices.DllImport("winmm.dll", 20 CharSet = System.Runtime.InteropServices.CharSet.Auto)] 21 private static extern int mciSendString(string command, 22 System.Text.StringBuilder buffer, int bufferSize, IntPtr hwndCallback); 23 24 private string aliasName = "MediaFile"; 25 26 public Home() 27 { 28 InitializeComponent(); 29 } 30 31 //再生ボタン 32 private void button2_Click(object sender, EventArgs e) 33 { 34 //再生するファイル名 ここに音源のUrlをいれる 35 string fileName = "http://www.talkenglish.com/audio871/AudioTE1/E01/sentence/E001S1.mp3"; 36 37 string cmd; 38 //ファイルを開く 39 cmd = "open \"" + fileName + "\" alias " + aliasName; 40 if (mciSendString(cmd, null, 0, IntPtr.Zero) != 0) 41 return; 42 //再生する 43 cmd = "play " + aliasName; 44 mciSendString(cmd, null, 0, IntPtr.Zero); 45 } 46 //停止ボタン 47 private void button3_Click(object sender, EventArgs e) 48 { 49 string cmd; 50 //停止する 51 cmd = "stop " + aliasName; 52 mciSendString(cmd, null, 0, IntPtr.Zero); 53 //閉じる 54 cmd = "close " + aliasName; 55 mciSendString(cmd, null, 0, IntPtr.Zero); 56 } 57 } 58}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/17 10:05