- 注 1:此问题仅涉及 HTML5视频,不涉及 Flash 视频。
- 注意 2:此外,它专门针对在 Android上播放的 HTML5 视频。
鉴于 YouTube 中的以下 HTML5 视频:
<div id="player">
<video poster="data:image/gif;
base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
src="http://v19.lscache2.c.youtube.com/videoplayback?begin=0&itag=18&
ipbits=0ampsignature=151700E49EA1B695940D89926C1C07CDF0C176F0.B7DE0453C70BFBA0BA644DE7F6BBB72E9EE43B5F&
sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0hPSVRSUl9FSkNOOV9MTFZF&
sver=3&
ratebypass=yes&expire=1304474400&len=265000&key=yt1&ip=0.0.0.0&
id=55884c15b4baba8f&el=home&yms=5602568839599417322&app=youtube_mobile" class="bn" width="1" height="2" id="player_VYhMFbS6uo8">
</video>
</div>
我可以将src=
属性识别为正在加载的 URL……究竟是什么?
我知道WebView不能自己播放 HTML5 视频,所以它将它们交给WebChromeClient:当我触摸代表剪辑的图像中间那个熟悉的向右箭头时,Android 会自动切换到播放视频,而不是在 WebView 中播放。
现在,我想在我的应用程序中以完全相同的方式开始播放视频,而无需用户“单击”那个右箭头。
我试图简单地将那个src=
URL ( http://v19.lscache2.c.youtube.com/videoplayback?begin.. .) 交给 WebView,认为这会触发WebChromeClient.onShowCustomView()
就像我单击右向箭头时发生的一样,但是......当我这样做时,什么都没有发生。
所以,我想知道:当我单击那个向右箭头WebView
时,从WebChromeClient
角度来看,实际上会发生什么?
我需要做什么才能“单击”那个右箭头?
更新:感谢@dronus 的评论,我在 LogCat 中找到了以下内容(手动单击播放按钮后):
05-03 19:35:07.296: INFO/StagefrightPlayer(121):
setDataSource('http://v19.lscache2.c.youtube.com/videoplayback?begin=0
&itag=18
&ipbits=0
&signature=BB85C25344502EF07EC970250EFBF6661098373E.6A7E108FA6F48A0741CDF7A356B0E1474F185195
&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0hPSVRTVl9FSkNOOV9MTVpJ
&sver=3
&ratebypass=yes
&expire=1304488800
&len=265000
&key=yt1
&ip=0.0.0.0
&id=55884c15b4baba8f
&el=watch
&yms=5602637908081220405
&app=youtube_mobile')
问题仍然存在:是什么触发了这种情况?