2016-11-06 146 views
3

我有這種類型的流:http://radiohoryzont.jgora.pl:8050。 問題是,當我嘗試使用ExoPlayer播放時,引發以下異常。ExoPlayer不適用於某些流

E/ExoPlayerImplInternal:內部軌道渲染器錯誤。 com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.upstream.HttpDataSource $ HttpDataSourceException: 無法連接到http://radiohoryzont.jgora.pl:8050

奇怪的是,在其他手機似乎正在工作(它在Android 6上工作,但不在Android 4上)。有人能幫助我嗎?

我正在使用EMAudioPlayer。

mediaPlayer = new EMAudioPlayer(getApplicationContext()); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setDataSource(getApplicationContext(), myURI); 

在此先感謝您的幫助。

+0

嘗試更換'HTTP //'在您的鏈接。這是根據[** Github **]上的ExoPlayer Issue頁面(https://github.com/google/ExoPlayer/issues/1003)。無論如何,你的無線電鏈路是給MP3音頻(44.1khz,128k,立體聲等),所以沒有理由讓Android 4設備不能播放音頻部分。 –

+0

也值得一拍(未經測試)...做一個基本的MP3播放代碼,而不是一些存儲MP3 URI使用'http://radiohoryzont.jgora.pl:8050 /;'(注意在URL結尾處添加了分號) 。也可以使用普通的Android SDK(例如:'MediaPlayer' API)代碼,用於平常的MP3播放......祝您好運。 –

+0

@ VC.One替換爲icy://不工作。 – Tom11

回答

4

我最近解決了同樣的問題,並找到了解決方案。

從而未能爲您提供的網址是Shoutcast的和這些不與HttpDataSource在Android 4.如果你管理與OkHttpDataSource替換此運作良好然而,數據將被正確檢索。

您正在使用EMAudioPlayer,它使用ExoPlayer來傳送音樂(API級別爲16+)。與冰冷的``//:您可以輕鬆地與OkHttpDataSource替代HttpDataSource

 

    TrackSelector trackSelector = new DefaultTrackSelector(
     new Handler(), 
     new AdaptiveVideoTrackSelection.Factory(
      new DefaultBandwidthMeter() 
     ) 
    ); 
    mediaPlayer = ExoPlayerFactory.newSimpleInstance(
     getApplicationContext(), 
     trackSelector, 
     new DefaultLoadControl() 
    ); 
    MediaSource source = new ExtractorMediaSource(
     myURI, 
     new OkHttpDataSourceFactory(
      new OkHttpClient(), 
      userAgent, 
      null 
     ), 
     new DefaultExtractorsFactory(), 
     null, 
     null 
    ); 
    mediaPlayer.prepare(source); 
    mediaPlayer.setPlayWhenReady(true); 

+0

很好,謝謝! – Tom11