vue2 使用liveplayer加載視頻

vue2 使用liveplayer加載視頻

官網: https://www.liveqing.com/docs/manuals/LivePlayer.html

  • 支持WebRTC/MP4播放;
  • 支持m3u8/HLS播放;
  • 支持HTTP-FLV/WS-FLV/RTMP播放;
  • 支持直播和點播播放;
  • 支持播放器快照截圖;
  • 支持點播多清晰度播放;
  • 支持全屏或比例顯示;
  • 自動檢測IE瀏覽器兼容播放;
  • 支持自定義疊加層;
  • 安裝
npm install @liveqing/liveplayer@2.7.35
# 安裝 copy-webpack-plugin 插件,用于復制依賴到public下
npm install copy-webpack-plugin@4.6.0
  • 配置vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin');module.exports = {configureWebpack: {plugins: [new CopyWebpackPlugin([{ from: 'node_modules/@liveqing/liveplayer/dist/component/crossdomain.xml'},{ from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer.swf'},{ from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer-lib.min.js', to: 'js/'},])]}}
  • index.html中引入 liveplayer-lib.min.js
 <script src="js/liveplayer-lib.min.js"></script>
  • 創建組件SDVideoPlayer.vue
<template><LivePlayerref="livePlayerRef":videoUrl="url":videoTitle="videoTitle":poster="poster":controls="controls":loop="loop":fluent="fluent":autoplay="autoplay":live="live":stretch="stretch":alt="alt":muted="muted":aspect="aspect":timeout="timeout":showCustomButton="showCustomButton":hideBigPlayButton="hideBigPlayButton":hideSnapshotButton="hideSnapshotButton":hideFullscreenButton="hideFullscreenButton":hideFluentButton="hideFluentButton":hideStretchButton="hideStretchButton":resolution="resolution":resolutiondefault="resolutiondefault":playbackRates="playbackRates":playbackRate="playbackRate":hasaudio="hasaudio":hasvideo="hasvideo":customButtons="customButtons":autofocus="autofocus":dblclickFullscreen="dblclickFullscreen":language="language":waterMark="waterMark":digitalZoom="digitalZoom"@message="handleMessage"@error="handleError"@ended="handleEnded"@timeupdate="handleTimeupdate"@pause="handlePause"@play="handlePlay"@fullscreen="handleFullscreen"@snapOutside="handleSnapOutside"@snapInside="handleSnapInside"@customButtons="handleCustomButtons"@canplay="handleCanplay"@volumechange="handleVolumechange"></LivePlayer>
</template><script>
import LivePlayer from '@liveqing/liveplayer';export default {components: { LivePlayer },props: {/*** 視頻地址*/url: {type: String,default: '',},/*** 視頻右上角顯示的標題*/videoTitle: {type: String,default: '',},/*** 視頻封面圖片*/poster: {type: String,default: '',},/*** 自動播放*/autoplay: {type: Boolean,default: true,},/*** 顯示播放器控制欄*/controls: {type: Boolean,default: true,},/*** 是否循環播放*/loop: {type: Boolean,default: false,},/*** 是否直播, 標識要不要顯示進度條*/live: {type: Boolean,default: false,},/*** 視頻流地址沒有指定情況下, 視頻所在區域顯示的文字,相當于 html img 標簽的 alt 屬性*/alt: {type: String,default: '無信號',},/*** 是否靜音*/muted: {type: Boolean,default: true,},/*** 視頻顯示區域的寬高比,fullscreen 即是全屏展示*/aspect: {type: String,default: '16:9',},/***  流暢模式*/fluent: {type: Boolean,default: true,},/***  是否拉伸*/stretch: {type: Boolean,default: false,},/***  m3u8 加載超時(秒)*/timeout: {type: Number,default: 20,},/***  是否在工具欄顯示自定義按鈕(極速/流暢, 拉伸/標準)*/showCustomButton: {type: Boolean,default: true,},/***  是否隱藏起播狀態下的大播放按鈕*/hideBigPlayButton: {type: Boolean,default: false,},/***  是否隱藏 快照 按鈕*/hideSnapshotButton: {type: Boolean,default: false,},/***  是否隱藏 全屏 按鈕*/hideFullscreenButton: {type: Boolean,default: false,},/***  是否隱藏 極速/流暢 按鈕*/hideFluentButton: {type: Boolean,default: false,},/***  是否隱藏 拉伸/標準 按鈕*/hideStretchButton: {type: Boolean,default: false,},/***  HLS點播流播放時使用:需已有對應清晰度的HLS流,供選擇的清晰度配置,*  如 "yh,fhd,hd,sd" (說明:*  yh:原始分辨率,*  fhd:超清,*  hd:高清,*  sd:標清,*  不配置則不啟用,*  需要提供多清晰度源,比如原畫源是test.m3u8, 則hd源即為test_hd.m3u8)*/resolution: {type: String,default: '',},/***  HLS點播流播放時使用:默認播放的清晰度*/resolutiondefault: {type: String,default: 'hd',},/***  HLS點播流播放時使用:倍速列表*/playbackRates: {type: Array,default: [0.5, 1, 2, 3],},/***  HLS點播流播放時使用:默認倍速*/playbackRate: {type: Number,default: 1,},/***  HTTP-FLV播放時使用: 是否有音頻,傳遞該屬性用于處理只有音頻或只有視頻的源, Boolean 默認不配置自動判斷*/hasaudio: {type: Boolean,},/***  HTTP-FLV播放時使用: 是否有視頻,傳遞該屬性用于處理只有音頻或只有視頻的源, Boolean 默認不配置自動判斷*/hasvideo: {type: Boolean,},/***  v2.5.1  自定義工具欄按鈕, 配置模板(按鈕名稱[:class名稱]), 多個用英文逗號分隔,*  示例:custom-buttons="對講,配置:vjs-icon-cog"*/customButtons: {type: String,default: '',},/***  v2.5.2  是否自動獲取焦點*/autofocus: {type: Boolean,default: false,},/***  v2.5.3  是否雙擊全屏*/dblclickFullscreen: {type: Boolean,default: true,},/***  v2.6.2  語言(zh-CN/en) 默認不配置自動判斷*/language: {type: String,},/***  v2.7.12  水印文字*/waterMark: {type: String,default: '',},/***  v2.7.29  電子放大*/digitalZoom: {type: Boolean,default: false,},},methods: {/////////////////////////////// 事件 ////////////////////////////////*** m3u8 加載失敗時觸發通知消息, 參數: { type: '', message: ''}*/handleMessage(obj) {this.$emit('message', obj);},/*** 播放器出錯回調, 參數: Error Object*/handleError(obj) {this.$emit('error', obj);},/*** 播放結束, 參數: 無*/handleEnded() {this.$emit('ended');},/*** 進度更新, 參數: 當前時間進度*/handleTimeupdate(obj) {this.$emit('timeupdate', obj);},/*** 暫停, 參數: 當前時間進度*/handlePause(obj) {this.$emit('pause', obj);},/*** 播放, 參數: 當前時間進度*/handlePlay(obj) {this.$emit('play', obj);},/*** 全屏狀態改變, 參數:true/false*/handleFullscreen(obj) {this.$emit('fullscreen', obj);},/*** 外部快照回調, 參數: 快照 Base64 數據*/handleSnapOutside(obj) {this.$emit('snapOutside', obj);},/*** 內部快照回調, 由控制欄快照按鈕觸發, 參數: 快照 Base64 數據*/handleSnapInside(obj) {this.$emit('snapInside', obj);},/*** v2.5.1 自定義按鈕點擊回調, 參數:名稱*/handleCustomButtons(obj) {this.$emit('customButtons', obj);},/*** v2.7.32 可播放, 參數:時長(秒)*/handleCanplay(obj) {this.$emit('canplay', obj);},/*** v2.7.32 音量改變回調, 參數:音量(0~1),靜音狀態*/handleVolumechange(obj) {this.$emit('volumechange', obj);},/////////////////////////////// 方法 ////////////////////////////////*** 播放*/play() {this.$refs.livePlayerRef.play();},/*** 暫停*/pause() {this.$refs.livePlayerRef.pause();},/*** 獲取暫停狀態*/paused() {this.$refs.livePlayerRef.paused();},/***  獲取當前播放時間進度, 同步返回播放時間進度數據*/getCurrentTime() {this.$refs.livePlayerRef.getCurrentTime();},/***  v2.2.5 設置當前播放時間進度, 即 seek*/setCurrentTime() {this.$refs.livePlayerRef.setCurrentTime();},/***  外部 API 方式獲取快照, 快照獲取成功后, 觸發 snapOutside Event*/snap() {this.$refs.livePlayerRef.snap();},/***  獲取靜音狀態*/getMuted() {this.$refs.livePlayerRef.getMuted();},/***  設置靜音狀態*/setMuted() {this.$refs.livePlayerRef.setMuted();},/***  v1.7.6 獲取全屏狀態*/isFullscreen() {this.$refs.livePlayerRef.isFullscreen();},/*** v1.7.6 觸發全屏, 需要放置到交互事件回調中調用*/requestFullscreen() {this.$refs.livePlayerRef.requestFullscreen();},/*** v2.1.9 退出全屏, 需要放置到交互事件回調中調用*/exitFullscreen() {this.$refs.livePlayerRef.exitFullscreen();},/*** v2.1.9 觸發全屏, 需要放置到交互事件回調中調用, 如果已處在全屏狀態, 則退出全屏*/toggleFullscreen() {this.$refs.livePlayerRef.toggleFullscreen();},/*** v1.7.7 獲取音量*/getVolume() {this.$refs.livePlayerRef.getVolume();},/*** v1.7.7 設置音量, 0~1*/setVolume(val) {this.$refs.livePlayerRef.setVolume(val);},/*** v2.7.10 獲取點播時長(秒)*/getDuration() {this.$refs.livePlayerRef.getDuration();},},
};
</script><style lang="scss" scoped></style>
  • 使用組件
 <div style="width: 500px; height: 400px"><SDVideoPlayer :url="url"></SDVideoPlayer></div>
 url: 'https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/hls/xgplayer-demo.m3u8'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917206.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript語法樹簡介:AST/CST/詞法/語法分析/ESTree/生成工具

AST簡介 在平時的開發中&#xff0c;經常會遇到對JavaScript代碼進行檢查或改動的工具&#xff0c;例如ESLint會檢查代碼中的語法錯誤&#xff1b;Prettier會修改代碼的格式&#xff1b;打包工具會將不同文件中的代碼打包在一起等等。這些工具都對JavaScript代碼本身進行了解析…

Java函數式編程之【基本數據類型流】

一、基本數據類型與基本數據的包裝類 在Java編程語言中&#xff0c;int、long和double等基本數據類型都各有它們的包裝類型Integer、Long和Double。 基本數據類型是Java程序語言內置的數據類型&#xff0c;可直接使用。 而包裝類型則歸屬于普通的Java類&#xff0c;是對基本數據…

.NET Core部署服務器

1、以.NET Core5.0為例&#xff0c;在官網下載 下載 .NET 5.0 (Linux、macOS 和 Windows) | .NET 根據自己需求選擇x64還是x86&#xff0c;記住關鍵下載完成還需要下載 Hosting Bundel &#xff0c;否則不成功 2、部署https將ssl證書放在服務器上&#xff0c;雙擊導入&#…

YOLO---04YOLOv3

YOLOV3 論文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/1804.02767】 YOLOV3 論文中文翻譯地址&#xff1a;&#xff1a;【YOLO3論文中文版_yolo v3論文 中文版-CSDN博客】 YOLOv3 在實時性和精確性在當時都是做的比較好的&#xff0c;并在工業界得到了廣泛應用 …

Qt知識點3『自定義屬性的樣式表失敗問題』

問題1&#xff1a;自定義類中的自定義屬性&#xff0c;如何通過樣式表來賦值除了QT自帶的屬性&#xff0c;我們自定義的類中如果有自定義的靜態屬性&#xff0c;也可以支持樣式表&#xff0c;如下 &#xff1a; Q_PROPERTY(QColor myBorderColor READ getMyBorderColor WRITE s…

RDQS_c和RDQS_t的作用及區別

&#x1f501; LPDDR5 中的 RDQS_t 和 RDQS_c — 復用機制詳解 &#x1f4cc; 基本角色 引腳名 讀操作&#xff08;READ&#xff09;作用 寫操作&#xff08;WRITE&#xff09;作用&#xff08;當啟用Link ECC&#xff09; RDQS_t Read DQS True&#xff1a;與 RDQS_c…

測試分類:詳解各類測試方式與方法

前言&#xff1a;為什么要將測試進行分類呢&#xff1f;軟件測試是軟件生命周期中的?個重要環節&#xff0c;具有較高的復雜性&#xff0c;對于軟件測試&#xff0c;可以從不同的角度加以分類&#xff0c;使開發者在軟件開發過程中的不同層次、不同階段對測試工作進行更好的執…

新手docker安裝踩坑記錄

最近在學習docker&#xff0c;安裝和使用折騰了好久&#xff0c;在這里記錄一下。下載# 依賴安裝 sudo apt update sudo apt install -y \ca-certificates \curl \gnupg \lsb-release# 使用清華鏡像源&#xff08;Ubuntu 24.04 noble&#xff09; echo \"deb [arch$(dpkg …

TOGAF指南1

1.TOGAF標準簡介 TOGAF&#xff08;The Open Group Architecture Framework&#xff09;就像是一個企業架構的“操作手冊”。它幫助企業設計、搭建和維護自己的“系統地圖”&#xff0c;確保不同部門、技術、業務目標能像齒輪一樣協調運轉。 它的核心是&#xff1a; 用迭代的方…

[Linux入門] Linux 防火墻技術入門:從 iptables 到 nftables

目錄 一、防火墻基礎&#xff1a;netfilter 與 iptables 的關系 1??什么是 netfilter&#xff1f; 2??什么是 iptables&#xff1f; 二、iptables 核心&#xff1a;五鏈四表與規則體系 1??什么是 “鏈”&#xff08;Chain&#xff09;&#xff1f; 2?? 什么是 “…

函數fdopendir的用法

以下是關于 fdopendir 函數的詳細解析&#xff0c;結合其核心功能、參數說明及典型應用場景&#xff1a;&#x1f50d; ?一、函數功能與原型??核心作用?將已打開的目錄文件描述符&#xff08;fd&#xff09;轉換為目錄流指針&#xff08;DIR*&#xff09;&#xff0c;用于后…

[源力覺醒 創作者計劃]_文心4.5開源測評:國產大模型的技術突破與多維度能力解析

聲明&#xff1a;文章為本人真實測評博客&#xff0c;非廣告&#xff0c;并沒有推廣該平臺 &#xff0c;為用戶體驗文章 一起來輕松玩轉文心大模型吧&#x1f449; 文心大模型免費下載地址 一、引言&#xff1a;文心4.5開源——開啟多模態大模型新時代 2025年6月30日&#x…

微信小程序無法構建npm,可能是如下幾個原因

安裝位置的問題&#xff0c;【npm安裝在cd指定位置】小程序緩存的問題退出小程序&#xff0c;重新構建即可

從 MyBatis 到 MyBatis - Plus:@Options 注解的那些事兒

在 MyBatis 以及 MyBatis - Plus 的開發過程中&#xff0c;注解的使用是提升開發效率和實現特定功能的關鍵。今天我們就來聊聊 Options 注解&#xff0c;以及在 MyBatis - Plus 中它的使用場景和替代方案。 一、MyBatis 中的 Options 注解 在 MyBatis 框架中&#xff0c;Option…

轉換圖(State Transition Diagram)和時序圖(Sequence Diagram)畫圖流程圖工具

針對程序員繪制狀態轉換圖&#xff08;State Transition Diagram&#xff09;和時序圖&#xff08;Sequence Diagram&#xff09;的需求&#xff0c;以下是一些好用的工具推薦&#xff0c;涵蓋在線工具、桌面軟件和基于文本的工具&#xff0c;適合不同場景和偏好。這些工具在易…

基于php的在線酒店管理系統(源代碼+文檔+PPT+調試+講解)

課題摘要在旅游住宿行業數字化轉型的背景下&#xff0c;傳統酒店管理存在房態更新滯后、預訂渠道分散等問題。基于 PHP 的在線酒店管理系統&#xff0c;憑借其開發高效、兼容性強的特點&#xff0c;構建集客房管理、預訂處理、客戶服務于一體的綜合性管理平臺。 系統核心功能包…

視頻質量檢測中卡頓識別準確率↑32%:陌訊多模態評估框架實戰解析

原創聲明本文為原創技術解析&#xff0c;核心技術參數與架構設計引用自《陌訊技術白皮書》&#xff0c;禁止未經授權的轉載與改編。一、行業痛點&#xff1a;視頻質量檢測的現實挑戰在實時流媒體、在線教育、安防監控等領域&#xff0c;視頻質量直接影響用戶體驗與業務可信度。…

流式輸出阻塞原因及解決辦法

流式輸出不懂可看這篇文章&#xff1a;流式輸出&#xff1a;概念、技巧與常見問題 正常情況&#xff0c;如下代碼所示&#xff1a; async def event_generator():# 先輸出數字1yield "data: 1\n\n"# 然后每隔2秒輸出數字2&#xff0c;共輸出10次for i in range(10):…

linux系統----Ansible中的playbook簡單應用

目錄 Playbooks中tasks語法使用 1、file 創建文件&#xff1a;touch 創建目錄&#xff1a;directory 2、lineinfile 修改文件某一行文本 3、replace 根據正則表達式替換文件內容&#xff08;指定換字符串&#xff09; 5、template/copy 模板作用類似于copy&#xff0…

bmcweb工作流程

在openbmc中,bmcweb是一個web服務程序,類似于lighttpd,提供web服務。本文將簡單介紹這個服務進程的執行流程。 bmcweb的入口函數main(). main() -> run() run()先注冊routes,最后調用app.run(). 第一個注冊的route為crow::webassets:requestRoutes(). crow::webasse…