问题描述
我想使用ExoPlayer播放HLS(HTTP实时流)。 但是我遇到了以下错误:
E / ExoPlayerImplInternal:源错误。 com.google.android.exoplayer2.upstream.HttpDataSource $ HttpDataSourceException:无法连接到https://my_url/file.m3u8
下面是我的设置代码:
private fun playTest() {
player = ExoPlayerFactory.newSimpleInstance(
DefaultRenderersFactory(this.requireContext()),DefaultTrackSelector(),DefaultLoadControl())
val uri = Uri.parse("https://my_url/file.m3u8")
ep_video_view.player = player
val dataSourceFactory = DefaultDataSourceFactory(this.requireContext(),"user-agent")
val mediaSource = HlsMediaSource(uri,dataSourceFactory,handler,null)
player?.prepare(mediaSource)
player?.playWhenReady = true
}
谢谢。
解决方法
在Java
TrackSelection.Factory adaptiveTrackSelection = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(mContext),new DefaultTrackSelector(adaptiveTrackSelection),new DefaultLoadControl());
playerView.setPlayer(player);
DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext,Util.getUserAgent(mContext,"Exo2"),defaultBandwidthMeter);
String hls_url = "YOUR STREAMING URL HERE";
Uri uri = Uri.parse(hls_url);
Handler mainHandler = new Handler();
MediaSource mediaSource = new HlsMediaSource(uri,dataSourceFactory,mainHandler,null);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
https://medium.com/@haxzie/adaptive-hls-streaming-on-android-with-googles-exoplayer-64820017edf0
,这里的新手,但希望它会有所帮助。我一直在做和你一样的事情,我注意到未加密的 hls 流有效。尝试使用带有 http 的链接。只是为了检查。我无法让 Exoplayer 播放 https hls 流。