2012-01-23 39 views
2

我正在嘗試閱讀Shoutcast流,然後使用MediaStreamSource播放它。這是優秀的開源project,節省了我很多時間。稍作修改後,我可以聽到完美的聲音。但問題是,我得到週期性的嗶嗶聲/打嗝類噪音。從Shoutcast獲取打嗝噪音

任何想法如何我可以阻止這種噪音。我認爲它可能是Shoutcast間隔發送一些元數據,但沒有找到如何停止。試過request.Headers["Icy-MetaData"] = "0"; 但它並沒有解決我的問題。任何幫助將不勝感激。

編輯1: 我做了一些更多的調查。我讀了我的流數據2-3分鐘,發現流中有很多'零'字節。這裏是 '0' 字節的索引

92 247 359 1208 1904 2037 2227 2397 2536 2694 2740 2863 2952 3048 3110 3689 3994 4027 4098 4218 4730 4830 4943 5029 5115 5248 5315 5358 5666 6084 6375 6873 6920 7441 7660的列表中7700 7756 8174 8254 8614 9010 9018 9025 9039 9541 9846 .....

是因爲httpwebrequest緩慢下載/無法下載或Shoutcast本身發送那些零字節?還有這'0'字節造成打嗝噪音?

EDIT2: 這裏是Shoutcast的我應得的響應的代碼行數

 HttpWebRequest request = result.AsyncState as HttpWebRequest; 
     HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse;  
     r = response.GetResponseStream(); 
     ShoutcastHeader(r); 

,這裏是我的ShoutcastHeader方法定義:

 StreamReader headerReader = new StreamReader(r); 
     bool headerIsDone = false; 
     while (!headerIsDone) 
     { 
      string headerLine = headerReader.ReadLine(); 

      if (headerLine.StartsWith("icy-name:")) 
      { 
       StationName = headerLine.Substring(9); 
      } 
      else if (headerLine.StartsWith("icy-genre:")) 
      { 
       Genre = headerLine.Substring(10); 
      } 
      else if (headerLine.StartsWith("icy-br:")) 
      { 
       BitRate = short.Parse(headerLine.Substring(7)); 
      } 
      else if (headerLine.StartsWith("icy-metaint:")) 
      { 
       MetaInt = int.Parse(headerLine.Substring(12)) * 1111084; 
       MetadataAvailable = true; 
      } 
      else if (headerLine.Equals("")) 
       headerIsDone = true; 
     } 

這裏是headerReader中的響應

ICY 200 OK ice-notice1:
這個流需要Winamp
冰冷-notice2:Shoutcast一樣分佈式網絡音頻服務器/ Linux的v1.9.93atdn
冰冷名稱:寶萊塢&超越 - 無線電NRI 24/7 冰冷的流派:印度印地文泰米爾語泰盧固語馬拉雅拉姆語德西 冰冷-url:HTTP://www.radionri.com 內容類型:音頻/ MPEG 冰冷-酒吧:1 冰冷-BR:128

我也有我的SkyDrive共享location地方流的字節。

+2

我觀察到發生在Radio應用程序Radio RIP上的相同事情。雖然這是間歇性的。我對這個問題的答案很好奇 –

+0

對我來說非常煩人,那聲音每隔10秒就會出現一次。在Android應用上它是每1或2秒鐘的 –

+0

。一旦開始,它就在那裏,直到我關閉應用程序並重新啓動。 –

回答

0

Based on this thread它看起來像打嗝是頭信息定期resent。有一個issue on ShoutStreamSource project referencing this太:

「當前實現第一個被解析後不放棄mp3headers這導致從流中傳來的聲音hicups,並且將其固定在不久的將來。」

但是,在這個答案時,它看起來像項目被擱置。希望你或其他人可以添加此功能。至少知道問題是什麼應該有助於解決方案。

+0

謝謝。但看起來人們已經以某種方式修復了它。我在wp7市場上看到了一個流光,並且它在shoutcast上工作得很好 –

+0

雖然我明白你想解決打嗝問題,但這是導致問題的原因的答案。我想如果你想要修復ShoutStreamSource項目的幫助,那麼你可能想問一個關於該項目中問題的信息的新問題。或者至少編輯你的問題,否則會令人困惑。至於其他應用程序,他們可能不會使用這個庫,或者如果他們是他們可能沒有共享他們的修復程序。 –

+0

謝謝。合理 –