In this post, I want show you a class C# to play audio use API winmm.dll, here is code snippet:
1: public class AudioPlayHelper
2: {3: [DllImport("winmm.dll")]
4: private static extern long mciSendString(
5: string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
6: 7: #region Play Audio
8: 9: public static void Play(string fileName, bool repeat)
10: {11: mciSendString("open \"" + fileName + "\" type mpegvideo alias MediaFile",
12: null, 0, IntPtr.Zero);
13: 14: mciSendString("play MediaFile" + (repeat ? " repeat" : String.Empty), null,
15: 0, IntPtr.Zero); 16: } 17: 18: public static void Play(byte[] embeddedResource, bool repeat)
19: {20: ExtractResource(embeddedResource, Path.GetTempPath() + "resource.tmp");
21: mciSendString("open \"" + Path.GetTempPath() + "resource.tmp" +
22: "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
23: mciSendString("play MediaFile" + (repeat ? " repeat" : String.Empty),
24: null, 0, IntPtr.Zero);
25: } 26: 27: public static void Pause()
28: {29: mciSendString("stop MediaFile", null, 0, IntPtr.Zero);
30: } 31: 32: public static void Stop()
33: {34: mciSendString("close MediaFile", null, 0, IntPtr.Zero);
35: } 36: 37: private static void ExtractResource(IEnumerable<byte> res, string filePath)
38: {39: if (File.Exists(filePath)) return;
40: 41: var fs = new FileStream(filePath, FileMode.OpenOrCreate);
42: var bw = new BinaryWriter(fs);
43: 44: foreach (var b in res) bw.Write(b);
45: 46: bw.Close(); 47: fs.Close(); 48: } 49: 50: #endregion
51: 52: #region Record
53: 54: public static void Record()
55: {56: mciSendString("open new type waveaudio alias MediaFile", null, 0, IntPtr.Zero);//cannot record mp3
57: mciSendString("record MediaFile", null, 0, IntPtr.Zero);
58: } 59: 60: public static void Save(string fileName)
61: {62: mciSendString("save MediaFile \"" + fileName + "\"", null, 0, IntPtr.Zero); //extension .wav
63: mciSendString("close MediaFile ", null, 0, IntPtr.Zero);
64: } 65: 66: #endregion
67: }This application will be play mp3 sound and record wav sound by easy call static function.
Hope you enjoy it!
No comments:
Post a Comment