H5播放HLS之DPlayer播放

2023-11-11 09:40
文章标签 播放 h5 hls dplayer

本文主要是介绍H5播放HLS之DPlayer播放,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、创建vue项目

http://dplayer.js.org/guide.html

DPlayer使用是基于vue的,所以先安装vue并创建vue项目

卸载vue

npm uninstall -g vue-cli

安装vue为最新(4.x)

npm install -g @vue/cli
vue -V

如果需要指定版本安装vue3.x则可以

npm i -g @vue/cli@^3.12.1
vue -V

创建项目

vue create video
cd video
npm run serve
vue add router

安装DPlayer组件

npm i dplayer -S
或
yarn add dplayer

二、DPlayer播放

创建好项目后使用vscode编辑器打开,按照如下步骤实现dplayer的使用

1、删除不必要的路由器,修改router.js将HelloWorld.vue设置为跟路由

const routes = [{path: "/",name: "HelloWorld",component: HelloWorld,},
];

2、添加Dplayer的自定义播放组件VueDplayerHLS.vue

<template><div class="dplayer"></div>
</template><script>
import DPlayer from "dplayer";
export default {props: {autoplay: {type: Boolean,default: false,},theme: {type: String,default: "#FADFA3",},loop: {type: Boolean,default: false,},lang: {type: String,default: "zh",},screenshot: {type: Boolean,default: false,},hotkey: {type: Boolean,default: true,},preload: {type: String,default: "auto",},contextmenu: {type: Array,},logo: {type: String,},video: {type: Object,required: true,validator(value) {return typeof value.url === 'string'}},},data() {return {dp: null,};},mounted() {const player = (this.dp = new DPlayer({// 挂载元素element: this.$el,// 自动播放autoplay: this.autoplay,// 主题颜色theme: this.theme,// 循环播放loop: this.loop,// 显示语言lang: this.lang,// 显示抓拍screenshot: this.screenshot,// 快捷键hotkey: this.hotkey,// 预加载preload: this.preload,// 播放器上下文菜单contextmenu: this.contextmenu,// 左上角logologo: this.logo,// 播放视频源video: {// 播放器背景图pic: this.video.pic,defaultQuality: this.video.defaultQuality,// 不同播放质量源quality: [{url: this.video.quality[0].url,name: this.video.quality[0].name,},{url: this.video.quality[1].url,name: this.video.quality[1].name,}],// 缩略图thumbnails: this.video.thumbnails,// 视频源类型type: this.video.type,},}));// 播放事件player.on("play", () => {this.$emit("play");});// 停止事件player.on("pause", () => {this.$emit("pause");});// 可播放事件player.on("canplay", () => {this.$emit("canplay");});// 正在播放事件player.on("playing", () => {this.$emit("playing");});// 结束播放事件player.on("ended", () => {this.$emit("ended");});// 播放错误事件player.on("error", () => {this.$emit("error");});}
};
</script>
<style scoped></style>

关于vue自定义组件基础知识我这里不再涉及!

3、根路由HelloWorld.vue引用播放器组件

<template><div class="hello"><d-playerref="player"@play="play"@pause="pause":logo="logo":lang="lang":video="video":contextmenu="contextmenu"></d-player></div>
</template><script>
import VueDPlayer from "./VueDplayerHLS";
import logoImg from "@/assets/logo.png";
import backImg from "@/assets/back.jpg";export default {name: "HelloWorld",data() {return {video: {// 视频质量列表quality: [{name: "240P",url: "http://192.168.12.187:8080/live/1.m3u8",},{name: "360P",url: "http://192.168.12.187:8080/live/1.m3u8",},{name: "720P",url: "http://192.168.12.187:8080/live/1.m3u8",},],// 播放器背景图pic: backImg,// 默认播放视频质量0开始defaultQuality: 2,// 视频缩略图thumbnails: logoImg,// 播放视频格式type: "hls",},// 播放器语言lang: "zh-cn",// 左上角视频logo图logo: logoImg,// 是否自动播放autoplay: false,// 播放器实例player: null,// 上下文菜单列表contextmenu: [{text: "CSDN",link: "https://blog.csdn.net/lixiang987654321",},{text: "百度",link: "https://www.baidu.com",},],};},components: {"d-player": VueDPlayer,},methods: {play() {console.log('开始播放...')},pause() {console.log('停止播放...')},},mounted() {//this.player = this.$refs.player.dp;//console.log(this.player);//var hls = new Hls();//hls.loadSource('http://192.168.12.187:8080/live/1.m3u8');//hls.attachMedia(this.player);},
};
</script><style scoped>
h1,
h2 {font-weight: normal;
}
ul {list-style-type: none;padding: 0;
}
li {display: inline-block;margin: 0 10px;
}
a {color: #42b983;
}
.hello {width: 750px;margin: 0 auto 50px;
}
@media only screen and (max-width: 640px) {.hello {width: 100%;}
}
</style>

4、打包测试

我们使用开发环境测试,运行如下命令打包

npm run serve

打包完成后,直接打开浏览器地址

http://192.168.50.7:8080/

在这里插入图片描述

点击播放即可播放我们的HLS视频流了
在这里插入图片描述

经过初步测试Dplayer的延迟比hls.min.js和videojs延迟还要大,大概在10s左右,而videojs大概在7-8s

源码获取、合作、技术交流请获取如下联系方式:
QQ交流群:961179337
在这里插入图片描述

微信账号:lixiang6153
公众号:IT技术快餐
电子邮箱:lixx2048@163.com

这篇关于H5播放HLS之DPlayer播放的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389154

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

H5漂流瓶社交系统源码

一个非常有创意的H5漂流瓶社交系统源码,带完整前端h5和后台管理系统。 环境:Nginx 1.20.1-MySQL 5.6.50-PHP-7.3 代码下载

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬