我想监控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();
任何想法都非常受欢迎。
答案 0 :(得分:1)
不幸的是,不可能使用android.media.MediaPlayer API。在回调onVideoSizeChanged()中没有关于它的消息。您可以幸运地使用事件android.media.MediaPlayer.OnInfoListener和他的额外内容检查回调MEDIA_INFO_BUFFERING_START,但行为会根据制造商进行更改。
我的建议是切换到新的ExoPlayer,这是一个由Google提供支持的开源项目。在上一版本中,它处理HLS。通过类HlsChunkSource,您可以检索有关所有块请求的信息(例如,通过方法getChunkOperation())。