如何检测HLS视频适用于Exoplayer android中的Live,VOD或Event

时间:2016-11-18 12:02:48

标签: android hls exoplayer

我在我的应用程序中集成了android exoplayer 。我必须检测收到的HLS(.m3u8)流是用于Live还是VOD或Event,因此根据该控制器必须为播放器进行修改。我只有一个播放器实例,因此应该处理所有支持的媒体,如vod或live或event 我正在寻找一些调试点来了解exoplayer中m3u8解析器的工作情况,以便我能够接收这些参数。

2 个答案:

答案 0 :(得分:1)

不支持实时与事件区分。对于直播与赛事,您可以查看当前的时间轴,但这不是特定于HLS的。通过查询播放器准备好后的持续时间来区分实时流和vod。直播流将返回UNKNOWN_TIME,因为vod流将返回流的已知持续时间。

答案 1 :(得分:0)

您可以使用以下代码播放.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);
}