2017-10-14 116 views
1

我正在尋找一種在C#中播放mpeg音頻文件的方法。隨着MP3的情況很簡單:C#播放MPEG音頻文件

System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer(); 
    player.Open(new System.Uri(File)); 
    player.Play(); 

我正在尋找一種方式類似簡單的M4A或WEBM音頻文件播放。現在我很絕望,我試圖做一個變通方法:

 String path = Path.GetFullPath("./x.m4a"); 
     Process process = new Process(); 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     startInfo.FileName = "ffplay.exe"; 
     startInfo.Arguments = "-vn -showmode 0 " + path; 
     process.StartInfo = startInfo; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     process.StartInfo.CreateNoWindow = true; 
     process.Start(); 

對於現在的我能夠發揮x.m4a文件,但是當我退出該文件時,它不會停止。另外,我恐怕對賽道流量無法控制。有沒有其他方法(例如NuGet包)來播放mpeg文件?

回答

0

好的,我找到了一種方法。顯然,NAudio庫可以完成這項工作,但是您需要爲MPEG4層安裝編解碼器。在此之後它很簡單:

NAudio.Wave.WaveOut wave = new NAudio.Wave.WaveOut(); 
wave.Init(fileName); 
wave.Play(); 

編輯:諷刺的是,一個月後,我發現我自己的答案同樣的問題。對於老版本的n音訊(例如用於.NET 4.0),你需要一點點解決方法:因爲系統需要等待,直到玩家完成

 var wave = new WaveOut(); 
     var x = new AudioFileReader(filename); 
     wave.Init(x); 
     wave.Play(); 

     while(true)System.Threading.Thread.Sleep(100); 

末循環簡單相加。隨意編輯。