This commit is contained in:
2025-09-14 00:21:54 +08:00
commit d40b3bbd62
766 changed files with 36275 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
/** 以下内容为自动生成,请勿手动修改 */
module.exports = {
data: {
page_data_0: `https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-360p.mp4`,
page_data_1: undefined,
page_data_2: true,
page_data_3: ``,
page_data_4: false,
page_data_5: false,
page_data_6: false,
page_data_7: false,
page_data_8: false,
page_data_9: false,
page_data_10: 0,
page_data_11: true,
page_data_12: true,
page_data_13: true,
page_data_14: true,
page_data_15: 0,
page_data_16: ["contain", "fill", "cover"],
page_data_17: `当前标题`,
},
page_fun_0(e) {
this.setData("page_data_0", e.detail.value);
},
page_fun_1(e) {
this.setData("page_data_1", e.detail.value);
},
page_fun_2(e) {
this.setData("page_data_2", e.detail.value);
},
page_fun_3(e) {
this.setData("page_data_3", e.detail.value);
},
page_fun_4(e) {
this.setData("page_data_4", e.detail.value);
},
page_fun_5(e) {
this.setData("page_data_5", e.detail.value);
},
page_fun_6(e) {
this.setData("page_data_6", e.detail.value);
},
page_fun_7(e) {
this.setData("page_data_7", e.detail.value);
},
page_fun_8(e) {
this.setData("page_data_8", e.detail.value);
},
page_fun_9(e) {
this.setData("page_data_9", e.detail.value);
},
page_fun_10(e) {
this.setData("page_data_10", e.detail.value);
},
page_fun_11(e) {
this.setData("page_data_11", e.detail.value);
},
page_fun_12(e) {
this.setData("page_data_12", e.detail.value);
},
page_fun_13(e) {
this.setData("page_data_13", e.detail.value);
},
page_fun_14(e) {
this.setData("page_data_14", e.detail.value);
},
page_fun_15(e) {
this.setData("page_data_15", e.detail.value);
},
page_fun_16(e) {
this.setData("page_data_17", e.detail.value);
},
};

View File

@@ -0,0 +1,238 @@
<!-- 以下内容为自动生成,请勿手动修改 -->
<view class="container">
<showbox title="video演示">
<box>
<view class="_ui-space">
<view>
{{page_data_4}}{{page_data_5}}
<video
src="{{page_data_0}}"
duration="{{page_data_1}}"
controls="{{page_data_2}}"
danmu-list="{{page_data_3}}"
enable-danmu="{{page_data_5}}"
danmu-btn="{{page_data_4}}"
autoplay="{{page_data_6}}"
loop="{{page_data_7}}"
muted="{{page_data_8}}"
show-mute-btn="{{page_data_9}}"
initial-time="{{page_data_10}}"
show-progress="{{page_data_11}}"
show-fullscreen-btn="{{page_data_12}}"
show-play-btn="{{page_data_13}}"
show-center-play-btn="{{page_data_14}}"
object-fit="{{page_data_16[page_data_15]}}"
poster="{{page_data_17}}"
/>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>src</text></view
>
<view style="flex: 6" class="_ui-input">
<input
value="{{page_data_0}}"
placeholder="src"
type="text"
bindinput="page_fun_0"
/>
</view>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>duration</text></view
>
<view style="flex: 6" class="_ui-input">
<input
value="{{page_data_1}}"
placeholder="duration"
type="text"
bindinput="page_fun_1"
/>
</view>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启controls</text>
</view>
<switch
checked="{{page_data_2}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_2"
/>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>danmuList</text></view
>
<view style="flex: 6" class="_ui-input">
<input
value="{{page_data_3}}"
placeholder="danmuList"
type="text"
bindinput="page_fun_3"
/>
</view>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启danmuBtn</text>
</view>
<switch
checked="{{page_data_4}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_4"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启enableDanmu</text>
</view>
<switch
checked="{{page_data_5}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_5"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启autoplay</text>
</view>
<switch
checked="{{page_data_6}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_6"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启loop</text>
</view>
<switch
checked="{{page_data_7}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_7"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启muted</text>
</view>
<switch
checked="{{page_data_8}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_8"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启showMuteBtn</text>
</view>
<switch
checked="{{page_data_9}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_9"
/>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>initialTime</text></view
>
<view style="flex: 6" class="_ui-input">
<input
value="{{page_data_10}}"
placeholder="initialTime"
type="text"
bindinput="page_fun_10"
/>
</view>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启showProgress</text>
</view>
<switch
checked="{{page_data_11}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_11"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启showFullscreenBtn</text>
</view>
<switch
checked="{{page_data_12}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_12"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启showPlayBtn</text>
</view>
<switch
checked="{{page_data_13}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_13"
/>
</view>
<view class="_dflex _jc_space-between">
<view class="_dflex _ai_center">
<text>是否开启showCenterPlayBtn</text>
</view>
<switch
checked="{{page_data_14}}"
color="rgba(255, 36, 66, 1)"
bindchange="page_fun_14"
/>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>objectFit</text></view
>
<view style="flex: 6" class="_ui-input">
<picker
value="{{page_data_15}}"
range="{{page_data_16}}"
bindchange="page_fun_15"
>
{{page_data_16[page_data_15] ?? '请选择'}}
</picker>
</view>
</view>
<view class="_dflex">
<view style="flex: 4" class="_dflex _ai_center"
><text>poster</text></view
>
<view style="flex: 6" class="_ui-input">
<input
value="{{page_data_17}}"
placeholder="poster"
type="text"
bindinput="page_fun_16"
/>
</view>
</view>
</view>
</box>
</showbox>
</view>

View File

@@ -0,0 +1,34 @@
.video-action button {
margin: 10px;
flex: 1;
}
.video-action > view {
display: flex;
}
.video-show {
padding: 10px;
border-radius: 12px !important;
overflow: hidden !important;
padding-top: 10px;
padding-bottom: 0;
}
.myVideo {
border-radius: 12px !important;
}
.video-show video {
width: 100%;
border-radius: 12px;
}
._ui-button-transparent {
background-color: white;
border: 1px solid #ff2442;
color: rgba(255, 36, 66, 1);
}

View File

@@ -0,0 +1,117 @@
const __templateJs = require("./templates.js");
const __mergePageOptions = require("../../util/mergePageOptions.js");
function getRandomColor() {
const rgb = [];
for (let i = 0; i < 3; ++i) {
let color = Math.floor(Math.random() * 256).toString(16);
color = color.length === 1 ? `0${color}` : color;
rgb.push(color);
}
return `#${rgb.join('')}`;
}
Page(__mergePageOptions({
onShareAppMessage() {
return {
title: 'video',
path: 'page/component/pages/video/video'
};
},
onReady() {
this.videoContext = xhs.createVideoContext('myVideo');
},
inputValue: '',
data: {
enableAutoRotation: true,
src: '',
danmuList: [{
text: '第 1s 出现的弹幕',
color: '#ff0000',
time: 1
}, {
text: '第 3s 出现的弹幕',
color: '#ff00ff',
time: 3
}],
height: 200,
showMute: false
},
bindInputBlur(e) {
this.inputValue = e.detail.value;
},
bindButtonTap() {
const that = this;
xhs.chooseVideo({
sourceType: ['album', 'camera'],
maxDuration: 60,
camera: ['front', 'back'],
success(res) {
that.setData({
src: res.tempFilePath
});
}
});
},
bindVideoEnterPictureInPicture() {
console.log('进入小窗模式');
},
bindVideoLeavePictureInPicture() {
console.log('退出小窗模式');
},
bindVideoPlay() {
this.videoContext.play();
},
bindVideoPause() {
this.videoContext.pause();
},
bindVideoStop() {
this.videoContext.stop();
},
bindVideoSeek() {
this.videoContext.seek(10);
},
bindVideoSendDanmu() {
this.videoContext.sendDanmu({
text: '小红书小程序',
color: getRandomColor(),
time: 12
});
},
videoErrorCallback(e) {
console.log('视频错误信息:');
console.log(e.detail.errMsg);
},
handleSwitchChange(e) {
this.setData({
enableAutoRotation: e.detail.value
});
},
handleVideoEnd() {
console.log('----------lemon video end');
},
handleVideoTimeUpdate() {
console.log('----------lemon video time update');
},
handFullscreen() {
console.log('----------lemon video full screen');
},
handleWaiting() {
console.log('----------lemon video handleWaiting');
},
handleError() {
console.log('----------lemon video handleError');
},
handleProgress() {
console.log('----------lemon video handleProgress');
},
handleLoadedMetadata() {
console.log('----------lemon video handleLoadedMetadata');
},
bindVideoMute() {
this.setData({
showMute: !this.data.showMute
});
},
bindloadedmetadata(e) {
console.log('bindloadedmetadata', e);
}
}, __templateJs));

View File

@@ -0,0 +1,7 @@
{
"navigationBarTitleText": "视频",
"usingComponents": {
"showbox": "../../common/component/showbox/index",
"box": "../../common/component/container/index"
}
}

View File

@@ -0,0 +1,32 @@
<view class="container">
<view class="video-show">
<video
id="myVideo"
class="_flex_1 myVideo"
muted="{{true}}"
autoplay="{{false}}"
enableDanmu="{{true}}"
show-center-play-btn="{{false}}"
show-mute-btn="{{showMute}}"
bindloadedmetadata="bindloadedmetadata"
src="https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-360p.mp4">
</video>
</view>
<showbox title="基础使用">
<box>
<view class="video-action">
<view>
<button class="_ui-button-transparent" bindtap="bindVideoPlay">播放</button>
<button class="_ui-button-transparent" bindtap="bindVideoPause">暂停</button>
</view>
<view>
<button class="_ui-button-transparent" bindtap="bindVideoStop">停止</button>
<button class="_ui-button-transparent" bindtap="bindVideoSeek">跳到第10秒</button>
</view>
</view>
</box>
</showbox>
</view>
<include src="templates.xhsml" />