2016-09-24 83 views
1

我正在與raspberri pi 3的UWP上與VS 2015,我有mediaPlayer對象的問題。它工作正常,但它在每個文件的開頭和結尾都有噪音,我需要逐個播放一些小MP3(或任何其他編解碼器)文件,每個文件之間我會聽到兩聲嘈雜的聲音。任何機構都有解決方案。我檢查了我的電腦中沒有任何噪音的文件,這些噪音只發生在UWP中。代碼如下:iot媒體播放器噪音

async Task PlayVoice() 
    { 
     MediaPlayer player = BackgroundMediaPlayer.Current; 
     player.AutoPlay = true; 
     player.RemoveAllEffects(); 
     player.MediaEnded += MediaPlayer_Loop; 
     player.Volume = 1; 
     player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3")); 
      vc++; 
    } 

    void MediaPlayer_Loop(MediaPlayer player, object e) 
    { 
     if (player == null) 
      return; 
     if (vc >= f.Length) 
      return; 
     player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3")); 
     vc++;   
    } 
+0

當您說這些噪音只發生在UWP中時,您是否確實意味着噪音只發生在物聯網設備中? – Jackie

+0

我沒有在其他物聯網設備中檢查它,但它只發生在RPI中。在我的桌面上它永遠不會發生。 –

回答

0

音頻停止後和下面的一個開始之前,在它們之間的間隙,這是煩惱的聽衆的來源。您可以嘗試使用MediaPlaybackList,因爲items in a MediaPlaybackList are rendered using gapless playback。這樣的代碼:

void PlayBackList() 
{ 
    MediaPlaybackList mediaPlaybackList; 
    MediaSource mediaSource; 
    MediaPlaybackItem mediaPlaybackItem; 

    MediaElement mediaElement = new MediaElement(); 

    mediaPlaybackList = new MediaPlaybackList(); 

    for (vc = 0; vc < f.Count; vc++) 
    { 
     mediaSource = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".wma")); 
     mediaPlaybackItem = new MediaPlaybackItem(mediaSource); 
     mediaPlaybackList.Items.Add(mediaPlaybackItem); 
    } 

    mediaPlaybackList.AutoRepeatEnabled = true; 
    mediaElement.SetPlaybackSource(mediaPlaybackList); 
    mediaElement.AutoPlay = true; 
    mediaElement.Play(); 

} 

此外,該問題本身表現爲一個響亮的流行或點擊,就在聲音輸出和聲音輸出停止之後。這是因爲正在使用BCM2835 CPU的PWM輸出,而不是標準DAC。當PWM功能激活時,輸出電壓會跳變,導致爆音。更詳細的解釋是here

+0

謝謝你的回答,但我遇到了一個新問題,它幾乎解決了流行音,但在將代碼更改爲播放列表之後,如上所述,某些文件不能播放,我認爲小文件不能播放。玩的開始很好,但是當它到達一個小文件時,它不會玩更多。 –

+0

「小」?多少?在我的測試中,最小的文件是96KB。 –

相關問題