1.缓冲事件添加:vlc已内置好事件,只不过未开放API。 主要参考:http://blog.csdn.net/memegood123/article/details/87690082.缓冲进度添加: 主要参考http://s
1.缓冲事件添加:vlc已内置好事件,只不过未开放API。
主要参考:
2.缓冲进度添加:
主要参考
由于vlc我采用了最新的(android1.0.0),,基本流程差不多,稍微进行了修改;
在libvlcjni.c文件的vlc_event_callback函数下添加一下
else if(ev->type == libvlc_MediaPlayerBuffering) {
/* For determining the vout/ES track change */
jstring sData = (*env)->NewStringUTF(env, "data");
(*env)->CallVoidMethod(env, bundle, putFloat, sData, ev->u.media_player_buffering.new_cache);
(*env)->DeleteLocalRef(env, sData);
}上述意思是,在缓冲事件返回时执行bundle.putFloat("data",缓冲值)。不同版本上述代码略有不同:
1.media_player_buffering.new_cache对应于lib包下面media_player.c中的input_event_changed函数:
else if( newval.i_int == INPUT_EVENT_CACHE )
{
event.type = libvlc_MediaPlayerBuffering;
event.u.media_player_buffering.new_cache = (int)(100 *
var_GetFloat( p_input, "cache" ));
libvlc_event_send( p_mi->p_event_manager, &event );
}
最后只需在播放器handler中进行如下获取即可:
case EventHandler.MediaPlayerBuffering:
Log.i(TAG,
"MediaPlayerBuffering:" + msg.getData().getFloat("data"));
break;