2016-11-06 120 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

相关问题