Compact Framework 3.5에서 MP3 사운드를 재생하는 깨끗한 방법이 있습니까?
-
03-07-2019 - |
문제
P/Invoke 메소드를 사용하여 재생합니다 wav
소리. Windows Media Player에게 전화하여 플레이하는 방법이 있습니다. mp3
소리가 들지만 느리고 번거 롭습니다.
짧은 연주를하는 쉬운 방법이 있습니까? mp3
파일?
이것은 주로 응용 프로그램을위한 것입니다 격려 그리고 가청 신호 음악이 아닌 화면을보고 있지 않을 때.
감사!
해결책
CF 프레임 워크 3.5 이제 .wav 파일 재생 지원이 포함되어 있습니다.
네임 스페이스 System.Media.soundplayer
신호와 사운드 효과에 대한 짧은 웨이브 파일도 재생할 수도 있습니다. 더 빠르게 그들이 "준비가 되었기 때문에"MP3보다 ...
다른 팁
MP3를 재생하는 방법을 찾고 있다면 :
public class Sound { [DllImport("aygshell.dll", SetLastError = true)] private static extern IntPtr SndPlaySync(string pszSoundFile, uint dwFlags); [DllImport("aygshell.dll")] private static extern uint SndOpen(string pszSoundFile, ref IntPtr phSound); [DllImport("aygshell.dll")] private static extern uint SndPlayAsync(IntPtr hSound, uint dwFlags); [DllImport("aygshell.dll")] private static extern uint SndClose(IntPtr hSound); [DllImport("aygshell.dll")] private static extern uint SndStop(int SoundScope, IntPtr hSound); const int SND_SCOPE_PROCESS = 0x1; private static Random _random = new Random(); // init startup path... where you'll hold temp mp3s private static string _startupPath; public static string StartupPath { get { return Sound._startupPath; } set { Sound._startupPath = value; } } private enum SND { SYNC = 0x0000, ASYNC = 0x0001, NODEFAULT = 0x0002, MEMORY = 0x0004, LOOP = 0x0008, NOSTOP = 0x0010, NOWAIT = 0x00002000, ALIAS = 0x00010000, ALIAS_ID = 0x00110000, FILENAME = 0x00020000, RESOURCE = 0x00040004 } public static void PlaySound(string fileName) { PlaySound(fileName, null); } public static void PlaySound(string fileName, WaitCallback callback) { SndStop(SND_SCOPE_PROCESS, IntPtr.Zero); ThreadPool.QueueUserWorkItem(playSoundProcess, new object[] {fileName, callback }); } private static void playSoundProcess(object o) { object[] par = (object[])o; string fileName = (string)par[0]; WaitCallback callback = (WaitCallback)par[1]; SndPlaySync(fileName, 0); try { File.Delete(fileName); } catch { } if (callback != null) callback.Invoke(fileName); } public static void ClearSounds() { SndStop(SND_SCOPE_PROCESS, IntPtr.Zero); try { string[] oldFiles = Directory.GetFiles(StartupPath, "*.mp3"); foreach (string f in oldFiles) File.Delete(f); } catch { } } public static void PlaySound(byte[] mp3, WaitCallback callback) { string temp = string.Format("{0}\\{1}-{2}.mp3", StartupPath, DateTime.Now.Ticks, _random.Next()); using (FileStream fs = File.Create(temp)) { fs.Write(mp3, 0, mp3.Length); } PlaySound(temp, callback); } }
제휴하지 않습니다 StackOverflow