如何在 Exoplayer 中检测 HLS 视频是用于直播、VOD 还是事件 android
How to detect HLS video is for Live, VOD or Event in Exoplayer android
我已将 android exoplayer 集成到我的应用程序中。我必须检测接收到的 HLS (.m3u8) 流是用于直播或 VOD 或事件,因此必须根据该控制器为播放器进行修改。我只有一个播放器实例,因此它应该可以处理所有支持的媒体,例如 vod 或 live 或 event。
我正在寻找一些调试点以了解 exoplayer 中 m3u8 解析器的工作,以便我能够接收此参数。
尚不支持区分直播与活动。对于 Live vs Event,您可以查看当前时间线,但这不是特定于 HLS 的。通过查询播放器准备后的持续时间来区分直播流和视频流。直播流将 return UNKNOWN_TIME,其中 - 因为视频流将 return 流的已知持续时间。
您可以使用以下代码播放.m3u8文件:-
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
//Create the player using ExoPlayerFactory
videoPlayer = ExoPlayerFactory.newSimpleInstance(context,trackSelector);
Handler mHandler = new Handler();
String userAgent = Util.getUserAgent(context, "Exo Player");
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true);
HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,mHandler, null);
if (mediaUrl != null) {
videoPlayer.prepare(mediaSource);
videoPlayer.setPlayWhenReady(true);
}
我已将 android exoplayer 集成到我的应用程序中。我必须检测接收到的 HLS (.m3u8) 流是用于直播或 VOD 或事件,因此必须根据该控制器为播放器进行修改。我只有一个播放器实例,因此它应该可以处理所有支持的媒体,例如 vod 或 live 或 event。
我正在寻找一些调试点以了解 exoplayer 中 m3u8 解析器的工作,以便我能够接收此参数。
尚不支持区分直播与活动。对于 Live vs Event,您可以查看当前时间线,但这不是特定于 HLS 的。通过查询播放器准备后的持续时间来区分直播流和视频流。直播流将 return UNKNOWN_TIME,其中 - 因为视频流将 return 流的已知持续时间。
您可以使用以下代码播放.m3u8文件:-
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
//Create the player using ExoPlayerFactory
videoPlayer = ExoPlayerFactory.newSimpleInstance(context,trackSelector);
Handler mHandler = new Handler();
String userAgent = Util.getUserAgent(context, "Exo Player");
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true);
HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,mHandler, null);
if (mediaUrl != null) {
videoPlayer.prepare(mediaSource);
videoPlayer.setPlayWhenReady(true);
}