大图APP
大图APP
  • 发布:2020-12-07 23:45
  • 更新:2024-07-31 11:03
  • 阅读:11528

吐槽一下:uni-app原生video画质简直弱爆了,H5播放器甩原生video几条街!!

分类:nvue

视频地址:http://vd2.bdstatic.com/mda-jmawcmkjagd8je0u/mda-jmawcmkjagd8je0u.mp4

这是uni-app原生video的画质

然后这是H5的video的画质

虽然这个视频本身画质不是很高,但是相对于H5的播放器画面更细腻柔和,原生的video比较粗糙,满满的小方格!

吐槽完了我分享一下我使用纯 nvue 项目加载“西瓜播放器”的方法:

西瓜视频播放器,官网:https://v2.h5player.bytedance.com/,

新建组件:H5-Video.nvue


<script>  

    export default {  

        data()  
        {  
            return{  
                //视频地址  
                src:'http://vd2.bdstatic.com/mda-jmawcmkjagd8je0u/mda-jmawcmkjagd8je0u.mp4'   
            }  
        },  
        onBackPress()  
        {  
            //退出页销毁播放器  
            uni.$xgplayer.close()  
        },  

        mounted()  
        {  

            this.xgplayer()  
        },  

        methods: {  
             xgplayer()   
             {  
                 let styles = {  
                    top: '0px',  
                    bottom: '540px',  
                    height: '256px',      
                    width: '100%',      
                    zindex:0,  
                    position: 'static',  
                    titleNView: {  
                        autoBackButton: true,  
                        backgroundColor: '#202028',  
                        titleColor: '#ffffff'  
                    } ,  
                    "statusbar": {    
                        "immersed": true ,//开启沉浸式状态栏    
                        "background": '#202028'  
                    },  

                    "hardwareAccelerated" : true, //开启硬件加速  
                    "allowsInlineMediaPlayback": true,//ios关闭原生控件  

                 };  
                 uni.$xgplayer = plus.webview.create('','xgplayer', styles, {}); //挂载到uni全局  
                 uni.$xgplayer.setStyle({  
                    'videoFullscreen':'landscape-primary',//视频全屏时支持横屏 IOS 端无效  
                 });  

                 uni.$xgplayer.loadURL("/hybrid/html/xgplayer.html?src="+this.src)  

                 uni.$xgplayer.show();  
             }  

        },  
    }  
</script>  

新建本地HTML文件
hybrid/html/xgplayer.html

<!DOCTYPE html>  
<html>  
  <head>  
    <meta charset="utf-8">  
        <meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,minimal-ui">  
        <meta name="referrer" content="no-referrer">  
    <title>H5高清播放</title>  
    <script src="js/uni.webview.1.5.2.js" charset="utf-8"></script>  
    <style type="text/css">  
      html, body {width:100%;height:100%;margin:auto;overflow: hidden;background-color: #000000;-webkit-user-select: none; user-select: none;}  

    </style>  
  </head>  
  <body>  
    <div id="mse"></div>  
    <script src="https://cdn.jsdelivr.net/npm/xgplayer@1.1.4/browser/index.js" charset="utf-8"></script>  
        <script>  

            let url = getQueryVariable('src');  

            let player = new Player({  
                 "id": "mse",  
                 "url": url,  
                 "playsinline": true,  
                 "width":"100%",  
                 "height":"225px",  
                 "autoplay": true,  
                 "whitelist": [''],  
                 "danmu": {  
                   "comments": [  
                     {  
                       "duration": 15000,  
                       "id": '1',  
                       "start": 3000,  
                       "txt": '长弹幕长弹幕长弹幕长弹幕长弹幕',  
                       "style": {  //弹幕自定义样式  
                         "color": '#ff9500',  
                         "fontSize": '17px',  
                         // "border": 'solid 1px #ff9500',  
                         "borderRadius": '50px',  
                         "padding": '5px 11px',  
                         "backgroundColor": 'rgba(255, 255, 255, 0.1)'  
                       }  
                     }  
                   ],  
                   "area": {  
                     "start": 0,  
                     "end": 1  
                   }  
                 },  
             });  

             //获取url参数  
             function getQueryVariable(variable)  
             {  
                var reg = new RegExp('(^|&)' + variable + '=([^&]*)(&|$)', 'i');  
                var r = window.location.search.substr(1).match(reg);  
                if (r != null) {  
                   return unescape(r[2]);  
                }  
                return null;  
             }  

        </script>  
  </body>  
</html>

这样图二的效果就实现了!

缺点:就是和应用交互通讯困难,目前还没较好治疗药物!

有点:画质清晰、加载速度快,相同方法可以整合DP、videojs等网页H5播放器,DP支持 CDNBye p2p加速,速度更快!!

uni-app的video组件画质问题从去年就开始关注,直到现在已经彻底不报希望了,只能另找出路!!
你可以说插件市场有许多原生的播放器插件可以选择,如果说视频播放部分需要使用第三方插件来弥补,那么原生video组件存在的意义是什么??难道原生video已经不能再优化了吗???

现在是视频播放的潮流,将来更是,为什么没有得到重视??

8 关注 分享
2***@qq.com 降龙十八掌 BlackFish 2***@qq.com 删库跑路 samshum22 一抱一个胖猪猪 makeit

要回复文章请先登录注册

onehello

onehello

最终解决了么?最近我也在看,怎么做视频,想用videojs
2021-11-06 19:12
降龙十八掌

降龙十八掌

楼主大咖,,为什么我这里一直提示,请求的页面xgplayer.html无法打开,是什么原因?
2021-05-29 10:03
大明子

大明子

我也遇到这样的问题,但是我这边是APP, 找了两天的解决办法。无果
2020-12-14 11:25
大图APP

大图APP (作者)

回复 速翔网络 :
你指的“原生播放器”是uni-app的 video组件吗???可以边缓存边播放??是边放边加载吧!!
2020-12-09 20:09
速翔网络

速翔网络

回复 大图APP :
缓存能提供思路吗?比如电影m3u8格式,原生播放器可以边缓存边播放,你说的缓存以外完成怎么实现?
2020-12-08 23:15
大图APP

大图APP (作者)

回复 速翔网络 :
大名鼎鼎的 字节跳动 旗下产品呀,西瓜视频、今日头条、抖音、火山视频!
缓存和投屏不一定要播放器的支持,可以在播放器以外完成,在播放页或者播放器控件上添加按钮就行,
从播放的画质和流畅性来看,H5至少优于uni-app的原生视频组件,
如果是H5+app的话比较好处理交互问题,像我这种纯nvue原生渲染的app,和H5 webview页面信息交互十分困难!!我认为就这一点比较致命!!
2020-12-08 09:55
速翔网络

速翔网络

第一次才知道有西瓜播放器,我有几个疑惑,不考虑H5版,只谈APP和小程序
1、西瓜视频能实主流视频缓存吗?
2、西瓜视频能实现投屏吗?
3、仿抖音模式,西瓜视频比原生播放器体验如何?特别是滑动流畅和提前预加载视频
2020-12-08 09:35