2009-01-20 83 views
2

爲什麼SDL_Mixer不能播放某些mp3的音樂?爲什麼SDL_Mixer不能播放某些mp3的音樂?

我正在利用SDL_Mixer在我創建的應用程序中播放音樂。在某些歌曲(實際上是整個專輯)上,音樂不會在沒有返回任何錯誤的情況下播放。使用Mix_LoadMUS成功加載音樂數據,並在使用該數據執行Mix_PlayMusic時,奇怪的是成功返回0,但不播放音樂。我也嘗試閱讀Mix_GetError()和SDL_GetError()(我相信它們是相同的),看看它是否引發錯誤,但沒有這樣的運氣。

我的問題是,SDL_mixer無法播放特定的mp3的其他原因是什麼?

我知道mp3的功能,因爲我可以在其他音樂播放器中播放它們。我也知道,因爲Mix_PlayingMusic返回0.他們沒有演奏(相反也許是音量被拒絕)。

謝謝大家!

回答

1

這實際上是一個特定的計算機的健全問題。在另一臺機器上嘗試相同的測試後,聲音完美無缺。只是一個快速記錄,以防其他人遇到此問題。

0

MP3算法的不同實現允許不同級別的格式一致性。大多數音樂播放器都相當寬容,因爲大多數用戶寧願聽到比什麼都沒有的東西波濤洶涌的聲音,但是常見的播放庫容忍得少得多。

我建議在音頻採樣編輯器(如Audacity)中打開違規(或全部)mp3,然後重新導出mp3。你可能會失去一點點的質量,因爲MP3壓縮是由於它本質上有損,但它可能會解決播放問題。

+0

我遇到的主要問題是應用程序是用來播放其他用戶的媒體,所以雖然這可能會使我的系統啓動並運行,但我無法轉換其他用戶的MP3,除非我有一個編程方式這樣做。 – jamesmillerio 2009-01-20 01:41:29

0

我有同樣的問題,並與reexporting大膽的的mp3文件沒有幫助,但做這樣的事情:如果 (Mix_PlayingMusic()== 0)在事件循環 Mix_PlayMusic() 中,音樂在2次或3次嘗試後播放(每次我運行該程序都不同)。 另一種解決方案是將音樂轉換爲.ogg文件。