车仔
车仔
  • 发布:2014-10-13 20:09
  • 更新:2018-04-27 20:18
  • 阅读:50688

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

分类:Native.js

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

2014-10-13 20:09 分享
已邀请:

最佳回复

DCloud_App_Array

DCloud_App_Array

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

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

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

    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);  

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

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

、--> 、-->
  • h5_学习者

    ios怎么搞?

    2015-01-23 14:28

  • DCloud_App_Array

    iOS建议使用video标签,@DCloud_IOS_XTY 确认native.js能否调用原生处理

    2015-01-23 16:47

  • atuxe

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

    2015-07-27 14:16

  • hum

    这种也无法实现分段的视频播放。

    2015-07-31 00:20

  • gadget2k

    这个方式也不能内嵌在网页上,是跳出来单独打开系统视频播放器播放的

    2015-11-11 20:27

  • 花猫阳

    确实能够正常的播放视频了,怎么修改视频的名称呢,网络视频的名称太长了

    2015-12-01 17:43

  • 炭烧红豆奶茶

    @DCloud_App_Array 这样调用会启动手机第三方应用,比如迅雷、360下载等下载软件.... 不想视频随便下载该怎么处理????

    2016-01-14 16:06

  • zangcen

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

    2016-02-04 15:21

  • 438668599@qq.com

    按照上面这个代码实现了,确实可以播放视频,但是我想在webview中按照制定大小显示出来,应该怎么处理呢?

    2016-12-26 11:25

  • windyu

    为什么不把IOS播放网络视频的也写进去呢,就当个统一

    2017-03-06 14:44

  • 黄X旭

    按这个方法播放视频,小米,opp手机直接拉起浏览器下载

    2017-06-27 10:41

362673301@qq.com

362673301@qq.com

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

、-->
DCloud_heavensoft

DCloud_heavensoft

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

DCloud_heavensoft

DCloud_heavensoft

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

车仔

车仔 (作者)

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

车仔

车仔 (作者)

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

车仔

车仔 (作者)

如果我想动态生成一个安卓控件比如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");
}}}

tanks

tanks

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

  • DCloud_heavensoft

    iOS用HTML5的video标签就可以

    2015-01-26 13:15

  • 尘岳two

    @DCloud_heavensoft:发现在iOS下使用video标签,加了src属性之后,会造成mui-action-back的报错,用mui.back也报错。删了src属性就没问题。但是删了src属性,这个video标签就没意义了啊

    2015-01-29 15:46

  • DCloud_heavensoft

    @尘岳two:额,貌似离的有点远。请联系下DCloud_mui_fxy看看怎么回事。

    2015-01-30 09:35

  • 尘岳two

    @DCloud_heavensoft:恩,昨天已经问了一个问题了,他说已经登记了。

    2015-01-30 09:42

lafer

lafer

有没有ios的啊

伟子

伟子

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

lafer

lafer

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

DCloud_heavensoft

DCloud_heavensoft

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

  • 朋也

    ipad上用vedio播放mp4视频,页面上啥都没有,iphone播放是好的

    2015-08-04 10:59

  • shotyou

    html5的video 有局限性 比如控制不能拖动进度条,手势控制等等

    2016-03-24 17:59

lafer

lafer

哦哦 谢谢

lafer

lafer

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

DCloud_heavensoft

DCloud_heavensoft

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

lafer

lafer

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

  • dengzhenhua

    有没有 试过 怎么样 才能实现自动播放啊?

    2015-07-02 15:29

  • lafer

    没弄成功的

    2015-07-02 20:34

phothink

phothink

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

只为你搁浅

只为你搁浅

跳转activity 没有反映
代码如下


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);  
求高人指点
  • 骇浪

    请问这个问题解决了么,我也遇到了,想拉起新的Activity

    2016-03-17 23:35

atuxe

atuxe

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

hum

hum

怎么实现分段播放??

hum

hum

视频是分段的, 怎么破?

atuxe

atuxe

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

hum

hum

多段视频有解决方案么?

gadget2k

gadget2k

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

  • DCloud_heavensoft

    因为Android5上默认关闭了硬件加速,需要在打开包含视频的页面传参数开启该webview的硬件加速,详见webview的style参数

    2015-11-12 04:22

qmit

qmit

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

番茄炒西红柿

番茄炒西红柿

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

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

zangcen

zangcen

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

明峰

明峰

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

2605950077@qq.com

2605950077@qq.com

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

1052420024@qq.com

1052420024@qq.com

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

1052420024@qq.com

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);  
    }  

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

  • czx517625126@163.com

    我这写了一样,但是闪退,这是什么鬼

    2017-03-06 17:39

  • czx517625126@163.com

    新建一个activity,是不是要// compile files('libs/android-support-v4.jar')
    compile 'com.android.support:appcompat-v7:19.1.0',这样写

    2017-03-06 17:40

1052420024@qq.com

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);  
            });  
Jonny515688
vitwell

vitwell

mark

2776332953@qq.com

2776332953@qq.com

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

要回复问题请先登录注册