Native.js调用原生播放video视频的样例

说明文档和样例中都没有找到html5 vedio的资料,HBuilder不支持调用手机移动端的本地播放器或第三方视频播放器吗?



2014-10-13 20:09 添加评论 分享
已邀请:

最佳回复

7

  1. HTML5有video标签,iOS可以直接用。Android上video标签不流畅,可以通过5+来解决。

  2. 本地视频可以使用plus API调用本地应用播放:
    plus.runtime.openFile()

  3. 网络视频可以通过native.js调用,如下示例:

\n
    var Intent = plus.android.importClass("android.content.Intent");
var Uri = plus.android.importClass("android.net.Uri");
var main = plus.android.runtimeMainActivity();
var intent=new Intent(Intent.ACTION_VIEW);
var uri=Uri.parse("网络视频地址");
intent.setDataAndType(uri,"video/*");
main.startActivity(intent);
\n

不管是哪种方式,如果遇到视频只有声音没有图像,是因为系统关闭了硬件加速。
硬件加速关闭可以在manifest里关,也可以在webview创建的时候通过参数设置是否允许该webview开启硬件加速。
在大多数手机上硬件加速是默认开启的,在部分Android5的手机上默认是关闭的,此时需要在打开包含视频的页面传参数开启该webview的硬件加速,详见webview的style参数。
但是也不要在Android5上默认就打开硬件加速,有的Android5对硬件加速兼容有问题,所以只在视频播放页面打开硬件加速即可。

这里有完整的视频开发指南http://ask.dcloud.net.cn/article/600


5

我觉得视频播放很重要,现在什么app不需要音频和视频播放呢?何况现在直播大火的今天,如果这个成为hbuilder的短板的话,我相信很多项目都不会采用这个开发app,因为不知道后面会有多少坑等着他们,伤不起的,所以强烈需求hbuilder升级关于视频播放的东西,这样才能应对各种需求,否则只能做做小项目,而且体验也不如原生。


3

plus.runtime可以调用任意三方app。
在Hello H5+里的runtime部分也可以看示例。


1

HTML5里的video标签,在不同的手机上有兼容性问题,如果是服务器的视频,也不流畅。
所以还是使用js单独写,调用外部视频播放器比较靠谱点。


0

车仔

赞同来自:

我的意思不是要调用第三方APP,而是视频播放器控件。
HBuilder的vedio怎么调用安卓原生的视频播放器?


0

车仔

赞同来自:

怎么通过js调用安卓原生的VideoView控件或MediaPlayer控件呢?


0

车仔

赞同来自:

如果我想动态生成一个安卓控件比如VideoView,这样写出来报错(mVideoView为null)。请帮忙讲讲此类控件的调用原理。谢谢!

{{{
var VideoView = plus.android.importClass("android.widget.VideoView");
var mVideoView = new VideoView(VideoView .ACTION_VIEW);
mVideoView.setVideoURI(uri);

mVideoView.requestFocus();

mVideoView.start();

}}}

{{{
var MediaPlayer = plus.android.importClass("android.media.MediaPlayer");
var MediaPlayer mp = new MediaPlayer(MediaPlayer.ACTION_VIEW);
MediaPlayer.setDataSource("http://www.citynorth.cn/music/confucius.mp3");
}}}


0

tanks

赞同来自:

请问调用IOS的视频播放器?代码怎么写啊,只看到安卓的调用代码Demo。


0

lafer

赞同来自:

有没有ios的啊


0

伟子

赞同来自:

只有安卓的,而且这种是扑捉不到播放进度等一些事件的,感觉没什么用。


0

lafer

赞同来自:

主要是现在有个项目急需的,有没有人帮我写一个ios的啊,进度事件都可以先不管了,没办法的,唉


0

DCloud_heavensoft

赞同来自:

iOS的HTML5自带video很好用,就是因为Android的video做的不好,才有这篇帖子。


0

lafer

赞同来自:

哦哦 谢谢


0

lafer

赞同来自:

安卓播放返回后好像有个问题,我点了播放,自动横屏全屏播放了,我退出播放再点其它页面的时候,所有页面都变成横屏的了,而且不能返回


0

DCloud_heavensoft

赞同来自:

webview可以控制横竖屏,你可以手动控制。plus.screen.lockOrientation
我们也检查下怎么回事。


0

lafer

赞同来自:

嗯 我就是控制了,所以横屏了就转不回来了,我现在要把手机的旋转和设置都可以转,变那样后才能转过来


0

phothink

赞同来自:

在子页面里能不能使用 plus.statistic 记录原生播放video视频的时间哪?
比如在子页面打开时开始计时,在子页面关闭时停止计时。


0

只为你搁浅

赞同来自:

跳转activity 没有反映
代码如下

javascript
var Intent = plus.android.importClass("android.content.Intent");
var TestActivity = plus.android.importClass("UI.TestActivity");
var intent=new Intent();
var main = plus.android.runtimeMainActivity();
intent.setClass(main.this,TestActivity.class);
main.startActivity(intent);
求高人指点


0

atuxe

赞同来自:

看了这个我还是不懂怎么搞,复制了上述示例代码(捡的了网络视频地址)运行没有生效,是不是哪里还缺什么东西?求指教


0

hum

赞同来自:

怎么实现分段播放??


0

hum

赞同来自:

视频是分段的, 怎么破?


0

atuxe

赞同来自:

能运行了,关键是如果我想把它做到页面中呢?怎么跟页面结合?
比如我想把播放窗口放在屏幕上方,下方放几个按钮呢?


0

hum

赞同来自:

多段视频有解决方案么?


0

gadget2k

赞同来自:

video标签在页面上点击只有声音没有图像,非得全屏以后才有视频,这是怎么回事?小米Note


0

qmit

赞同来自:

对这个视频播放的问题还是看得不明不白,有人给一个具体的示例吗?


0

番茄炒西红柿

赞同来自:

2、本地视频可以使用plus API调用本地应用播放:
plus.runtime.openFile()

这个处理,对于新手,这个真的不知道怎么写,没有完整的案例吗?


0

zangcen

赞同来自:

为什么这段代码 真机调试的时候正常 云端打包以后就无法执行了


0

明峰

赞同来自:

请教下,怎么定时关闭播放页面呢?


0

1396035958@qq.com

赞同来自:


0

2605950077@qq.com

赞同来自:

我用系统默认的播放器,放电影时,按返回就马上退出,要怎么改成返回呢?没播放电影时可以返回,只要电影在放时,按返回就退了。


0

1052420024@qq.com

赞同来自:

特此回帖,希望帮助和我一样被坑了很久的新手


0

1052420024@qq.com

赞同来自:

native层开启Activity(也就是插件)
在5+插件中如下开启:

public void PluginTestFunction(IWebview pWebview, JSONArray array)
{
Intent intent=new Intent();
intent.setClassName("com.wenju.widget","com.wenju.widget.Rtsp2Activity");
pWebview.getActivity().startActivity(intent);
}
\n

其中com.wenju.widget为包名,com.wenju.widget.Rtsp2Activity为activity的全称
5+插件开发http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/66


0

1052420024@qq.com

赞同来自:

NJS调用ACtivity方法如下:

mui.plusReady(function() {
console.log("ok");
var activity = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var intent = new Intent();
intent.setClassName(activity, "com.wenju.widget.Rtsp2Activity");
activity.startActivity(intent);
});
\n
0

Jonny515688

赞同来自:

mark


0

vitwell

赞同来自:

mark


0

mark


0

2776332953@qq.com - 80后大收

赞同来自:

有个问题,我的小米,调用时出现“打开方式”其中有“下载管理”,可以下载视频,怎么才能避免?


要回复问题请先登录注册