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

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

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

68 回复

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

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

网络视频可以通过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

更多关于uni-app Native.js调用原生播放video视频的样例的实战教程也可以访问 https://www.itying.com/category-93-b0.html


ios怎么搞?

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

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

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

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

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

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

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

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

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

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

我的直播程序 有画面 没声音 怎么办??

视频播放很重要 希望DCloud 把视频直播 这里 弄的强悍 一些

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

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

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

有例子吗?

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

plus.runtime.openFile() 不行吗?

回复 小郭哥:openFile 播放器路径 知道么?

怎么通过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”); }}}

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

iOS用HTML5的video标签就可以

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

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

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

有没有ios的啊

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

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

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

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

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

有没有app开发中的demo 视频播放到末尾,一直来回播放最后一秒,@ended事件也无效

哦哦 谢谢

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

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

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

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

没弄成功的

在子页面里能不能使用 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);

求高人指点<br>

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

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

怎么实现分段播放??

视频是分段的, 怎么破?

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

多段视频有解决方案么?

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

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

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

2、本地视频可以使用plus API调用本地应用播放: plus.runtime.openFile()
这个处理,对于新手,这个真的不知道怎么写,没有完整的案例吗?

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

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

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

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

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

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

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

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

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

当然,以下是一个关于如何在uni-app中使用Native.js调用原生播放video视频的示例代码。该示例展示了如何在uni-app项目中通过Native.js接口来调用原生视频播放功能。

1. 配置项目

首先,确保你的uni-app项目已经配置好Native.js的支持。通常,这需要在manifest.json文件中进行相应的配置。

2. 编写Native.js模块

nativeplugins目录下创建一个新的原生插件目录,例如NativeVideoPlayer,并在其中编写NativeVideoPlayer.js文件。

// NativeVideoPlayer.js
module.exports = {
    playVideo: function(url) {
        // 获取原生视频播放器对象
        let player = plus.video.create('video', {
            top: '0px',
            left: '0px',
            width: '100%',
            height: '100%',
            autoplay: true,
            showCenterPlayBtn: true
        }, {
            controls: 'default'
        });

        // 设置视频源
        player.setSrc(url);

        // 添加到页面
        document.body.appendChild(player);
    }
};

3. 在uni-app中调用Native.js模块

在你的uni-app页面中,通过plus.nativeUI.importClass方法导入并使用Native.js模块。

<template>
    <view>
        <button @click="playVideo">播放视频</button>
    </view>
</template>

<script>
export default {
    methods: {
        playVideo() {
            if (window.plus) {
                // 导入Native.js模块
                let NativeVideoPlayer = plus.nativeUI.importClass('NativeVideoPlayer');

                // 调用playVideo方法播放视频
                NativeVideoPlayer.playVideo('https://www.example.com/path/to/your/video.mp4');
            } else {
                console.error('Native.js is not supported in this environment.');
            }
        }
    }
}
</script>

<style>
/* 样式可以根据需要进行调整 */
</style>

注意事项

  1. 环境检测:在调用Native.js功能前,务必检查window.plus是否存在,以确保代码在非原生环境中不会报错。
  2. 路径配置:确保Native.js模块文件路径正确,并在manifest.json中正确配置。
  3. 权限:在调用视频播放功能时,确保应用已经获得了必要的权限,如网络访问权限等。

通过以上步骤,你可以在uni-app中成功调用Native.js实现原生视频播放功能。根据实际需求,你可以进一步扩展和优化该示例代码。

回到顶部