DCloud_UNI_GSQ
DCloud_UNI_GSQ
  • 发布:2019-01-02 21:04
  • 更新:2024-10-14 15:36
  • 阅读:43982

uni-app在H5平台使用video.js,以及播放m3u8格式的视频

分类:uni-app
  1. 创建模板文件index.html,在模版内引用video.js
<!DOCTYPE html>  
<html lang="zh-CN">  
    <head>  
        <meta charset="utf-8">  
        <meta http-equiv="X-UA-Compatible" content="IE=edge">  
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">  
        <title>  
            <%= htmlWebpackPlugin.options.title %>  
        </title>  
        <script>  
            document.addEventListener('DOMContentLoaded', function() {  
                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'  
            })  
        </script>  
        <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.baseUrl %>static/index.css" />  
        <link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">  
        <script src="https://unpkg.com/video.js/dist/video.min.js"></script>  
    </head>  
    <body>  
        <noscript>  
            <strong>Please enable JavaScript to continue.</strong>  
        </noscript>  
        <div id="app"></div>  
        <!-- built files will be auto injected -->  
    </body>  
</html>
  1. 在manifest.json内配置index.html路径
  2. 在vue文件内使用video.js初始化播放器
<template>  
    <view class="content">  
        <view class="video-js" ref="video">  

        </view>  
    </view>  
</template>  

<script>  
    export default {  
        onReady() {  
            // #ifdef H5  
            var video = document.createElement('video')  
            video.id = 'video'  
            video.style = 'width: 300px;height: 150px;'  
            video.controls = true  
            var source = document.createElement('source')  
            source.src = 'http://yf.ugc.v.cztv.com/cztv/ugcvod/2018/04/14/A98CD7B26B06D94A5CEA56AA7D723572/h264_800k_mp4.mp4_playlist.m3u8'  
            video.appendChild(source)  
            this.$refs.video.$el.appendChild(video)  
            videojs('video')  
            // #endif  
        },  
        methods: {  

        }  
    }  
</script>  

<style>  

</style>

注意事项

  1. 示例工程见附件
  2. 如果视频源格式为m3u8,m3u8文件可能遇到跨域问题,请自行百度
9 关注 分享
Trust Stalker丶 dub 3***@qq.com 子衣 锦笑江湖 h***@163.com 2***@qq.com 9***@qq.com

要回复文章请先登录注册

羊仔

羊仔

华为微信浏览器播放不了,你们试一下
2020-04-26 13:07
蒙奇D路飞

蒙奇D路飞

MP4播放正常 m3u8视频不显示
2020-01-18 16:43
Wxz

Wxz

videojs is not defined
2020-01-15 11:07
小资电脑

小资电脑

回复 BobZhang :
另外,确认服务器上已解决了跨域问题。
2019-12-02 22:11
小资电脑

小资电脑

回复 BobZhang :
1、首先保证在模板index.html文件里,插入video.min.js和video-js.css两个文件的调用。
2、manifest.json里h5配置页面填写模板index.html文件调用。
3、 onReady(){
let video = document.createElement('video');
video.id = 'video';
video.style = 'width: 100%; height: 100%;';
let source = document.createElement('source');
source.src = 'http://192.168.10.9/shizi/video/mp4/videolib_repo_1903_10_385z0ay8e_SD_385z0ay8e-mobile.mp4';
source.type = 'video/mp4';
video.appendChild(source);
this.$refs.video.$el.appendChild(video);
let that = this;
that.player = videojs('video',{
muted: false,
controls: true,
loop: false,
preload:'none',
language: 'zh-CN',
controlBar:{

volumePanel:{
inline:false
},
pictureInPictureToggle: false,

}
}, function(){
this.on('error', function() {//请求数据时遇到错误
console.log("请求数据时遇到错误")
});
this.on('stalled', function() {//网速失速
console.log("网速失速")
});
this.on('play', function() {//开始播放
console.log("开始播放")
});
this.on('pause', function() {//暂停
console.log("暂停")
});
this.on('timeupdate', function() {
console.log(this.currentTime())
})
});
//先将音量设置在25%,以免音量过高
this.player.volume(0.25);
4、如果看不到视频,检查确认有没有设置source.type
5、如果要更换视频源
this.player.src({
src:'http://192.168.10.9/shizi/video/mydream/live/2000.m3u8',
type: "application/x-mpegURL"
});
this.player.load();
this.player.play();
2019-12-02 22:10
BobZhang

BobZhang

回复 小资电脑 :
你好,我把项目导入到HbuilderX里了,看不到视频
2019-11-27 17:11
旭钦科技

旭钦科技

video组件也支持m3u8呀,这样做的好处是什么呢
2019-11-14 20:47
小资电脑

小资电脑

回复 DCloud_UNI_GSQ :
就是能保证播放hls和dash就行了。
2019-11-14 20:29
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 小资电脑 :
App端如果对内置的video组件不满意,可以使用web-view组件加载html,或者找一下插件市场有没有video相关的原生插件。
2019-11-14 15:36
小资电脑

小资电脑

非常感谢,这个demo实在是太有用了,摸索半宿,H5页面的video.js可以正常工作了,也可以切换视频源了。

就剩下那个问题了,APP里如果也想使用video.js的话,怎么办呢?其实主要就是dash格式视频的问题,APP里本身是不是已经可以支持hls了?MP4那就更不用说了,h5就支持。要用video.js无非就是要多支持几种格式。
2019-11-14 01:51