瀏覽代碼

3

dev_YWQ
congzc 1 年之前
父節點
當前提交
fd7f7ee81f
共有 7 個檔案被更改,包括 326 行新增198 行删除
  1. +1
    -0
      package.json
  2. +0
    -67
      src/pages/camera/index copy.vue
  3. +64
    -127
      src/pages/camera/index.vue
  4. +0
    -0
      src/pages/camera/indexChooseImage.vue
  5. +82
    -0
      src/pages/camera/indexVideo.vue
  6. +2
    -2
      src/pages/camera/indexWebcam.vue
  7. +177
    -2
      yarn.lock

+ 1
- 0
package.json 查看文件

@@ -54,6 +54,7 @@
"clipboard": "^2.0.11",
"dayjs": "^1.11.10",
"uview-plus": "^3.1.37",
"video.js": "^8.5.2",
"vue": "^3.2.45",
"vue-i18n": "^9.1.9",
"webcamjs": "^1.0.26"


+ 0
- 67
src/pages/camera/index copy.vue 查看文件

@@ -1,67 +0,0 @@
<template>
<div>
<div id="results"></div>
<div id="my_camera"></div>
<form>
<input type="button" value="拍照" @click="take_snapshot" />
<input type="button" value="关闭" @click="close_snapshot" />
</form>
</div>
</template>

// js部分
<script lang="ts" setup>
import { ref, watch, onMounted } from "vue";
//引入
import Webcam from "webcamjs";
//
const take_snapshot = () => {
// 要抓拍照片,只需调用Webcam.snap()函数,传入一个回调函数。图像数据将作为data URI传递给函数,然后您可以在您的web页面中显示它,或提交给服务器
Webcam.snap(function (data_uri) {
// display results in pages
console.log(data_uri);
document.getElementById("results").innerHTML =
"<h2>Here is your image:</h2>" + '<img src="' + data_uri + '"/>';
});
};
const close_snapshot = () => {
//关闭摄像头
Webcam.reset();
};
//以下为配置项可自取
onMounted(() => {
Webcam.set({
width: 1080, //实时摄像机查看器的宽度
height: 1920, //实时摄像机查看器的高度
dest_width: 400, //捕获相机图像的宽
dest_height: 400, //捕获相机图像的高
crop_width: 300, //最终裁剪图像的宽度(以像素为单位),默认为dest_width。
crop_height: 300, //最终裁剪图像的高度(以像素为单位),默认为dest_height。
image_format: "jpeg", //捕获图像的期望图像格式,可以是“jpeg”或“png”。
jpeg_quality: 90, //对于JPEG图像,这是理想的质量,从0(最差)到100(最好)。
enable_flash: true, //启用或禁用Flash回退,如果没有本机网络摄像头访问。
force_flash: false, //将此设置为true将始终在adobeflash回退模式下运行。
flip_horiz: false, //将此设置为true将水平翻转图像(镜像模式)。
fps: 30, //设置所需的fps(帧/秒)捕获速率。
swfURL: "./webcam.swf", //为adobeflash回退SWF文件设置一个备用位置
flashNotDetectedText: "未检测到flash播放器的文本/html。", //未检测到flash播放器的文本/html。
unfreeze_snap: true, //是否在拍照后解冻相机
upload_name: "webcam", //在上传摄像头图像文件时使用哪个HTTP POST参数名
});
// DOM元素必须已经创建并且为空。将ID或CSS选择器传递给Webcam.attach()函数(挂载dom)
Webcam.attach("#my_camera");
});
</script>

<style lang="scss" scoped>
video {
// width: 100vw;
// height: 100vh;
// object-fit: cover;
// background-color: aquamarine;
}
#results {
width: 120rpx;
height: 120rpx;
}
</style>

+ 64
- 127
src/pages/camera/index.vue 查看文件

@@ -1,143 +1,80 @@
<template>
<view class="page">
<!-- 顶部 -->
<view class="top">
<view class="tips">提示区</view>
<view class="showModel">展示模版</view>
</view>
<!-- 底部 -->
<view class="bottom">
<view class="camera">
<view v-show="!photoUrl" id="my_camera"></view>
<view v-show="photoUrl" id="results"></view>
</view>
<view class="btnBox">
<view class="takeBtn" @click="takePhoto">拍照</view>
<view v-show="photoUrl" class="takeBtn" @click="photoUrl = null"
>重拍</view
<div class="page">
<!-- Top section -->
<div class="top">
<div class="tips">提示区</div>
<div class="showModel">展示模版</div>
</div>

<!-- Bottom section -->
<div class="bottom">
<div class="camera">
<video
id="videoPlayer"
class="video-js"
width="600"
height="400"
controls
muted
>
</view>
</view>
<!-- <view id="results"></view>
<view id="my_camera"></view>
<view @click="takePhoto">拍照</view>
<view @click="closeCamera">关闭</view> -->
</view>
<source src="" />
</video>
<video muted></video>
<div v-show="photoUrl" id="results"></div>
</div>
<div class="btnBox">
<div class="takeBtn" @click="takePhoto">拍照</div>
<div v-show="photoUrl" class="takeBtn" @click="photoUrl = null">
重拍
</div>
</div>
</div>
</div>
</template>

// js部分
<script setup>
//#region 引入
import { ref, watch, onMounted } from "vue";
// import Webcam from "webcamjs";
import Webcam from "../../utils/webcam";
//#endregion ----------------------------
import { ref, onMounted } from "vue";
import videojs from "video.js";

//#region 相机
// 拍照
let player;
const photoUrl = ref(null);
function takePhoto() {
// console.log(Webcam.snap);
Webcam.snap((res) => {
photoUrl.value = res;
document.getElementById("results").innerHTML =
'<img style="width: 100%;height: 100%;" src="' + res + '"/>';
});

let videoElement;
async function initCamera() {
try {
videoElement = document.getElementById("videoPlayer");
console.log(videoElement);
player = videojs(videoElement, {}, function () {});
const stream = await navigator.mediaDevices.getUserMedia({ video: true });

// Attach the stream to the video element
videoElement.srcObject = stream;
videoElement.play();

// Initialize Video.js with the video element
} catch (error) {
console.error("Error accessing camera:", error);
}
}
// 关闭
function closeCamera() {
Webcam.reset();

function takePhoto() {
// Capture a photo
const videoElement = document.getElementById("videoPlayer");
const canvas = document.createElement("canvas");
canvas.width = videoElement.videoWidth;
canvas.height = videoElement.videoHeight;
const context = canvas.getContext("2d");
context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);

// Set the photo URL
photoUrl.value = canvas.toDataURL("image/png");
}
//#endregion ----------------------------

//#region 初始化配置相机
onMounted(() => {
Webcam.set({
// width: 864, //实时摄像机查看器的宽度
// height: 1536, //实时摄像机查看器的高度
width: 864, //实时摄像机查看器的宽度
height: 1536, //实时摄像机查看器的高度
// dest_width: 392, //捕获相机图像的宽
// dest_height: 698, //捕获相机图像的高
dest_width: 720, //捕获相机图像的宽
dest_height: 720, //捕获相机图像的高
// crop_width: 700, //最终裁剪图像的宽度(以像素为单位),默认为dest_width。
// crop_height: 700, //最终裁剪图像的高度(以像素为单位),默认为dest_height。
image_format: "png", //捕获图像的期望图像格式,可以是“jpeg”或“png”。
jpeg_quality: 90, //对于JPEG图像,这是理想的质量,从0(最差)到100(最好)。
enable_flash: true, //启用或禁用Flash回退,如果没有本机网络摄像头访问。
force_flash: false, //将此设置为true将始终在adobeflash回退模式下运行。
flip_horiz: false, //将此设置为true将水平翻转图像(镜像模式)。
fps: 30, //设置所需的fps(帧/秒)捕获速率。
swfURL: "./webcam.swf", //为adobeflash回退SWF文件设置一个备用位置
flashNotDetectedText: "未检测到flash播放器的文本/html。", //未检测到flash播放器的文本/html。
unfreeze_snap: true, //是否在拍照后解冻相机
upload_name: "webcam", //在上传摄像头图像文件时使用哪个HTTP POST参数名
flip_horiz: true, //是否镜像
});
// DOM元素必须已经创建并且为空。将ID或CSS选择器传递给Webcam.attach()函数(挂载dom)
Webcam.attach("#my_camera");
initCamera();
});
//#endregion -----------------------------
</script>

<style lang="scss" scoped>
.page {
padding: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
}
.top {
display: flex;
width: 100vw;
height: 30vh;
.tips {
width: 60%;
height: 30vh;
background-color: #000;
text-align: center;
}
.showModel {
width: 40%;
height: 30vh;
background-color: red;
text-align: center;
}
}
.bottom {
video {
width: 100% !important;
height: 100% !important;
}
display: flex;
width: 100vw;
height: 70vh;
.camera {
width: 80vw;
height: 70vh;
background-color: green;
// #my_camera {
// width: 100% !important;
// height: 100% !important;
// }
// #results {
// width: 100% !important;
// height: 100% !important;
// }
}
.btnBox {
width: 20vw;
height: 70vh;
background-color: skyblue;
.takeBtn {
width: 15vw;
height: 15vw;
border-radius: 50%;
background-color: #444;
line-height: 15vw;
text-align: center;
}
}
}
/* Your styles remain the same */
</style>

src/pages/camera/index copy 2.vue → src/pages/camera/indexChooseImage.vue 查看文件


+ 82
- 0
src/pages/camera/indexVideo.vue 查看文件

@@ -0,0 +1,82 @@
<template>
<div class="page">
<!-- Top section -->
<div class="top">
<div class="tips">提示区</div>
<div class="showModel">展示模版</div>
</div>

<!-- Bottom section -->
<div class="bottom">
<div class="camera">
<video
ref="video"
class="video-js vjs-default-skin"
width="600"
height="400"
controls
>
<source src="https://playtv-live.ifeng.com/live/06OLEGEGM4G.m3u8" />
</video>
<video
ref="videoElement"
id="videoPlayer"
class="video-js"
muted
></video>
<div v-show="photoUrl" id="results"></div>
</div>
<div class="btnBox">
<div class="takeBtn" @click="takePhoto">拍照</div>
<div v-show="photoUrl" class="takeBtn" @click="photoUrl = null">
重拍
</div>
</div>
</div>
</div>
</template>

<script setup>
import { ref, onMounted } from "vue";
import videojs from "video.js";

let player;
const photoUrl = ref(null);

async function initCamera() {
try {
const videoElement = document.getElementById("videoPlayer");
player = videojs(videoElement, {}, function () {});
const stream = await navigator.mediaDevices.getUserMedia({ video: true });

// Attach the stream to the video element
videoElement.srcObject = stream;
videoElement.play();

// Initialize Video.js with the video element
} catch (error) {
console.error("Error accessing camera:", error);
}
}

function takePhoto() {
// Capture a photo
const videoElement = document.getElementById("videoPlayer");
const canvas = document.createElement("canvas");
canvas.width = videoElement.videoWidth;
canvas.height = videoElement.videoHeight;
const context = canvas.getContext("2d");
context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);

// Set the photo URL
photoUrl.value = canvas.toDataURL("image/png");
}

onMounted(() => {
initCamera();
});
</script>

<style lang="scss" scoped>
/* Your styles remain the same */
</style>

src/pages/camera/index copy 3.vue → src/pages/camera/indexWebcam.vue 查看文件

@@ -57,8 +57,8 @@ onMounted(() => {
// height: 1536, //实时摄像机查看器的高度
width: 864, //实时摄像机查看器的宽度
height: 1536, //实时摄像机查看器的高度
dest_width: 392, //捕获相机图像的宽
dest_height: 698, //捕获相机图像的高
// dest_width: 392, //捕获相机图像的宽
// dest_height: 698, //捕获相机图像的高
dest_width: 720, //捕获相机图像的宽
dest_height: 720, //捕获相机图像的高
// crop_width: 700, //最终裁剪图像的宽度(以像素为单位),默认为dest_width。

+ 177
- 2
yarn.lock 查看文件

@@ -917,7 +917,7 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==

"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8"
integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
@@ -2076,6 +2076,47 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"

"@videojs/http-streaming@3.5.3":
version "3.5.3"
resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-3.5.3.tgz#23106e1ef2fd9b9b62aa9b3dc2083bd36d99c963"
integrity sha512-dty8lsZk9QPc0i4It79tjWsmPiaC3FpgARFM0vJGko4k3yKNZIYkAk8kjiDRfkAQH/HZ3rYi5dDTriFNzwSsIg==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/vhs-utils" "4.0.0"
aes-decrypter "4.0.1"
global "^4.4.0"
m3u8-parser "^7.1.0"
mpd-parser "^1.1.1"
mux.js "7.0.0"
video.js "^7 || ^8"

"@videojs/vhs-utils@4.0.0", "@videojs/vhs-utils@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz#4d4dbf5d61a9fbd2da114b84ec747c3a483bc60d"
integrity sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg==
dependencies:
"@babel/runtime" "^7.12.5"
global "^4.4.0"
url-toolkit "^2.2.1"

"@videojs/vhs-utils@^3.0.5":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c"
integrity sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==
dependencies:
"@babel/runtime" "^7.12.5"
global "^4.4.0"
url-toolkit "^2.2.1"

"@videojs/xhr@2.6.0":
version "2.6.0"
resolved "https://registry.yarnpkg.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80"
integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==
dependencies:
"@babel/runtime" "^7.5.5"
global "~4.4.0"
is-function "^1.0.1"

"@vitejs/plugin-legacy@^4.0.3":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz#27aad7ab082d2d554cf48a8e4f1c0ae9f3eca522"
@@ -2284,6 +2325,11 @@
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==

"@xmldom/xmldom@^0.8.3":
version "0.8.10"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==

accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -2302,6 +2348,16 @@ address@^1.1.2:
resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e"
integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==

aes-decrypter@4.0.1, aes-decrypter@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz#c1a81d0bde0e96fed0674488d2a31a6d7ab9b7a7"
integrity sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/vhs-utils" "^3.0.5"
global "^4.4.0"
pkcs7 "^1.0.4"

ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2934,7 +2990,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"

global@~4.4.0:
global@4.4.0, global@^4.3.1, global@^4.4.0, global@~4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
@@ -3034,6 +3090,11 @@ immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f"
integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==

individual@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97"
integrity sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==

inherits@2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
@@ -3146,6 +3207,11 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"

keycode@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
integrity sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A==

lcid@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-3.1.1.tgz#9030ec479a058fc36b5e8243ebaac8b6ac582fd0"
@@ -3204,6 +3270,24 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"

m3u8-parser@^6.0.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-6.2.0.tgz#5b2f2fe103b76bd3ffc77c6b1eafc3772b1251dd"
integrity sha512-qlC00JTxYOxawcqg+RB8jbyNwL3foY/nCY61kyWP+RCuJE9APLeqB/nSlTjb4Mg0yRmyERgjswpdQxMvkeoDrg==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/vhs-utils" "^3.0.5"
global "^4.4.0"

m3u8-parser@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-7.1.0.tgz#fa92ee22fc798150397c297152c879fe09f066c6"
integrity sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/vhs-utils" "^3.0.5"
global "^4.4.0"

magic-string@^0.25.7:
version "0.25.9"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
@@ -3307,6 +3391,16 @@ module-alias@^2.2.2:
resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.3.tgz#ec2e85c68973bda6ab71ce7c93b763ec96053221"
integrity sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==

mpd-parser@^1.0.1, mpd-parser@^1.1.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-1.2.2.tgz#bf479cbb0bec605130075c0e904a853b29265973"
integrity sha512-QCfB1koOoZw6E5La1cx+W/Yd0EZlRhHMqMr4TAJez0eRTuPDzPM5FWoiOqjyo37W+ISPLzmfJACSbJFEBjbL4Q==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/vhs-utils" "^3.0.5"
"@xmldom/xmldom" "^0.8.3"
global "^4.4.0"

ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -3322,6 +3416,22 @@ ms@2.1.3:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==

mux.js@7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-7.0.0.tgz#f5f80cd63bc5eaf13ba2e8b3396d4dd03a8aa1f2"
integrity sha512-DeZmr+3NDrO02k4SREtl4VB5GyGPCz2fzMjDxBIlamkxffSTLge97rtNMoonnmFHTp96QggDucUtKv3fmyObrA==
dependencies:
"@babel/runtime" "^7.11.2"
global "^4.4.0"

mux.js@^6.2.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-6.3.0.tgz#b0a46bc468402f7ce2be4e0f87ce903f8683bfeb"
integrity sha512-/QTkbSAP2+w1nxV+qTcumSDN5PA98P0tjrADijIzQHe85oBK3Akhy9AHlH0ne/GombLMz1rLyvVsmrgRxoPDrQ==
dependencies:
"@babel/runtime" "^7.11.2"
global "^4.4.0"

nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
@@ -3478,6 +3588,13 @@ pixelmatch@^4.0.2:
dependencies:
pngjs "^3.0.0"

pkcs7@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb"
integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==
dependencies:
"@babel/runtime" "^7.5.5"

pngjs@^3.0.0, pngjs@^3.3.3:
version "3.4.0"
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
@@ -3704,6 +3821,13 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"

rust-result@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72"
integrity sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==
dependencies:
individual "^2.0.0"

safe-area-insets@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/safe-area-insets/-/safe-area-insets-1.4.1.tgz#89309e01a516dcd7d2fe012a9c4115182957bd8b"
@@ -3714,6 +3838,13 @@ safe-buffer@5.2.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==

safe-json-parse@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac"
integrity sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==
dependencies:
rust-result "^1.0.0"

"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -3971,6 +4102,11 @@ update-browserslist-db@^1.0.13:
escalade "^3.1.1"
picocolors "^1.0.0"

url-toolkit@^2.2.1:
version "2.2.5"
resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607"
integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==

utif@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759"
@@ -4001,6 +4137,45 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==

"video.js@^7 || ^8", video.js@^8.5.2:
version "8.5.2"
resolved "https://registry.yarnpkg.com/video.js/-/video.js-8.5.2.tgz#11cebb3934a020e0e4ab04c4d454c8c3f35ff8b8"
integrity sha512-6/uNXQV3xSaKLpaPf/bVvr7omd+82sKUp0RMBgIt4PxHIe28GtX+O+GcNfI2fuwBvcDRDqk5Ei5AG9bJJOpulA==
dependencies:
"@babel/runtime" "^7.12.5"
"@videojs/http-streaming" "3.5.3"
"@videojs/vhs-utils" "^4.0.0"
"@videojs/xhr" "2.6.0"
aes-decrypter "^4.0.1"
global "4.4.0"
keycode "2.2.0"
m3u8-parser "^6.0.0"
mpd-parser "^1.0.1"
mux.js "^6.2.0"
safe-json-parse "4.0.0"
videojs-contrib-quality-levels "4.0.0"
videojs-font "4.1.0"
videojs-vtt.js "0.15.5"

videojs-contrib-quality-levels@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.0.0.tgz#faa8096594cdbfc3ccbefe8572fc20531ba23f3d"
integrity sha512-u5rmd8BjLwANp7XwuQ0Q/me34bMe6zg9PQdHfTS7aXgiVRbNTb4djcmfG7aeSrkpZjg+XCLezFNenlJaCjBHKw==
dependencies:
global "^4.4.0"

videojs-font@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-4.1.0.tgz#3ae1dbaac60b4f0f1c4e6f7ff9662a89df176015"
integrity sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w==

videojs-vtt.js@0.15.5:
version "0.15.5"
resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz#567776eaf2a7a928d88b148a8b401ade2406f2ca"
integrity sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==
dependencies:
global "^4.3.1"

vite@4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0"


Loading…
取消
儲存