记录HLS块请求

时间:2014-08-05 14:48:50

标签: android http-live-streaming

我想监控Android中HLS流上不同比特率之间的切换。所以我想要监控HLS块请求。并解析这些。你们有什么想法我会怎么回事呢?

我已经尝试过对视频的监控,但我不认为这就足够了......

        vv.setVideoPath("http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8");
        vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mMediaPlayer = mp;
                mMediaPlayer.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
                    @Override
                    public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                        Log.e(TAG, "perhaps changed bitrate?");
                    }
                });
            }
        });
        vv.start();

任何想法都非常受欢迎。

1 个答案:

答案 0 :(得分:1)

不幸的是,不可能使用android.media.MediaPlayer API。在回调onVideoSizeChanged()中没有关于它的消息。您可以幸运地使用事件android.media.MediaPlayer.OnInfoListener和他的额外内容检查回调MEDIA_INFO_BUFFERING_START,但行为会根据制造商进行更改。

我的建议是切换到新的ExoPlayer,这是一个由Google提供支持的开源项目。在上一版本中,它处理HLS。通过类HlsChunkSource,您可以检索有关所有块请求的信息(例如,通过方法getChunkOperation())。