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