HTML Video Play

本文深入探讨了HTML5视频播放器的工作流程,包括如何在网页中调用视频播放器、播放器JNI关系在WebKit中的实现、HTML5VideoView的使用及其类型、定时器在HTML5VideoView中的应用,以及MediaPlayer类的时间变化事件处理。重点阐述了关键技术点,如播放器的创建、全屏播放、非全屏播放、时间更新机制和事件响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.How will the HTML call video player in the webpage?

HTMLMediaElement::updatePlayState()->
HTMLMediaElement::m_player->play()->
MediaPlayer.cpp(in webkit)->play()//(this file use factory create player)->
MediaPlayerPrivateInterface->play()->
MediaPlayerPrivateAndroid.play()->android/webkit/HTML5VideoViewProxy.play()->
VideoPlayer.play(HTML5VideoViewProxy.java)->
HTML5VideoView.start()/HTML5VideoFullScreen/HTML5VideoInline.start()->
MediaPlayer.start(MediaPlayer.java)->(android_media_MediaPlayer.cpp)._start()

 

2. player JNI relationship in Webkit

MediaPlayerPrivateAndroid.cpp 's jni class
"android/webkit/HTML5VideoViewProxy" and "android/webkit/HTML5Audio"

There three classes in "MediaPlayerPrivateAndroid.cpp"

"MediaPlayerPrivate" as basic class;

"MediaPlayerVideoPrivate" as subclass for "android/webkit/HTML5VideoViewProxy"

"MediaPlayerVideoPrivate" as subclass for "android/webkit/HTML5Audio"

 

3. HTML5VideoView

in "VideoPlayer" (HTML5VideoViewProxy.java) we use "HTML5VideoView" for play.(how to use? i am finding out)

how many kinds of HTML5VideoView are used?

a."HTML5VideoView" as basic class

b."HTML5VideoFullScreen" is used for full screen playing

c."HTML5VideoInline" is used when it's not full screen.

 

4. Timer in HTML5VideoView

a.HTML5VideoView.start();

mTimer.schedule(new TimeupdateTask(mProxy),
TIMEUPDATE_PERIOD, TIMEUPDATE_PERIOD);

b. in TimeupdateTask's run()

        public void run() {
mProxy.onTimeupdate();
}

c. in HTML5VideoViewProxy.java

    public void onTimeupdate() {
sendMessage(obtainMessage(TIMEUPDATE));
}

d. in HTML5VideoViewProxy.java

nativeOnTimeupdate(msg.arg1, mNativePointer);

e. finally MediaPlayerPrivateAndroid.cpp

static void OnTimeupdate(JNIEnv* env, jobject obj, int position, int pointer)
{
if (pointer) {
WebCore::MediaPlayerPrivate* player = reinterpret_cast<WebCore::MediaPlayerPrivate*>(pointer);
player->onTimeupdate(position);
}
}

f. HTMLMediaElement::mediaPlayerTimeChanged (why is this, i am trying to find out)

 

转载于:https://www.cnblogs.com/elfylin/archive/2012/04/08/2437177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值