1 图片轮播
假如你是一个高级开发工程师,参考上面的显示提示框,在下面的代码上加个需求 startLoop 函数中弹出两次提示词 1 ,并且弹出遮罩层 停止音乐,输入对后,停1秒后马上弹出提示词2 , 输入对后 继续显示一批图片和播放音乐。你提示的信息和输入的词最好放在prompts 中 ,好维护。const prompts = [ { mainText: ‘测试1’, parts: [ { text: ‘本套课程价值上千,是否质量’, styles: ‘color: white; font-size: 24px;’ }, { text: ‘测试1’, styles: ‘font-weight: bold; color: red; font-size: 28px;’ } ] }, { mainText: ‘测试2’, parts: [ { text: ‘本套课程价值上千,是否愿意’, styles: ‘color: white; font-size: 24px;’ }, // 添加更多时间点的提示信息 ] }, ];
请在下面代码的基础上 改,不要删除其他功能 【 你添加了 let stageCount = 1; // 初始阶段为1 let shuffledImages = []; // 用于存储随机排序的图片数组 let shuffledVideos = []; // 用于存储随机排序的视频数组
要 函数按照要求在奇数阶段显示shuffledImages的随机图片,每张图片显示 200 毫秒,然后切换到下一张,这种状态持续 2 秒钟。在偶数阶段,它会显示shuffledVideos中的随机视频,每个视频显示 8 秒钟。 同样你模仿它创建1个循环,每隔2秒 随机选择一个视频显示 ,然后随机取10张图片 每图显示300毫秒。显示所有图后 再次循环。如下 使用一个计时器 timer 在每隔 200 毫秒 来显示图片, 直到显示完所有的图片。 在第一个 setTimeout 函数中,等待 2 秒后,清除了之前的计时器 timer。 随机选择一个视频并显示,然后等待 8 秒。 在第二个 setTimeout 函数中,再次使用一个计时器 timer 每隔 200 毫秒 ,直到显示完所有的图片。 最后,在第三个 setTimeout 函数中,等待 2 秒后,清除了计时器 timer,将 currentIndex 重置为 0,然后再次调用 startLoop() 函数,从头开始循环。 现在我的代码有点问题? 现在get_images.php?category=bianzhuang返回的json是 [ “24yhzb_out1.jpeg”, “show20dout.mp4”, “testabc.png”, “test.jpg”, …. ] 图片显示阶段1 【取值随机图片10个 ,每个图只显示200毫秒, 也就是2秒内快速显示10张图片 。】 视频显示阶段2 随机取1个mp4视频,直到播放完。 图片显示阶段3 【取值随机图片10个 ,每个图只显示200毫秒, 也就是2秒内快速显示10张图片 。】 阶段1的随机图片隔200毫秒显示,持续2秒【也就是这2秒内快速显示10张图片】。 阶段2的随机1个mp4视频 显示6秒,如果没有没有mp4视频则显示随机图片3秒 。 阶段3随机图片隔200毫秒显示,持续2秒。【也就是这2秒内快速显示10张图片】。 阶段4随机1个mp4视频 显示6秒,如果没有没有mp4视频则显示随机图片3秒 。 阶段5 阶段6 … 这样循环下去 总持续300秒 。
忘记之前的记录,请仔细看下面的代码和需求, 在这行 【 }, 2000); //阶段3 10张图,每个图只显示200毫秒,持续2秒 】的后面我想加个需求 从videos取1个mp4视频 播放,直到播放完后 接着阶段1 。
忘记之前的。仔细看下面代码 ,首先快速显示10张图片的阶段, 为什么每个图片没有显示300毫秒?
那个1张图先3秒是ok的,视频播放暂停音乐。视频播放完,继续显示10个图片 ,音乐自动开启也ok。
怎么改下 显示10张图片的阶段, 每个图片显示300毫秒
【
function startLoop() {
// 首先快速显示10张图片,每张300毫秒
for (let i = 0; i < 10; i++) {
showImage(currentIndex, 300);
currentIndex++;
}
setTimeout(() => {
// 显示1张图片3秒
showImage(currentIndex, 3000);
setTimeout(() => {
// 再次快速显示10张图片,每张300毫秒
for (let i = 0; i < 10; i++) {
showImage(currentIndex, 300);
currentIndex++;
}
setTimeout(() => {
videos = shuffleArray(videos);
// 开始视频阶段
startVideoPhase();
}, 3000);
}, 3000);
}, 3000);
// 随机重新排列图像数组
images = shuffleArray(images);
}
// 在 shuffleArray 函数中添加洗牌功能
function shuffleArray(array) {
const shuffledArray = array.slice(); // 创建数组的副本
for (let i = shuffledArray.length - 1; i > 0; i–) {
const j = Math.floor(Math.random() * (i + 1));
[shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];
}
return shuffledArray;
}
function startVideoPhase() {
// 暂停音乐
audioPlayer.pause();
// 随机排列视频数组
videos = shuffleArray(videos);
// 显示视频
const videoContainer = document.createElement(‘div’);
videoContainer.style.display = ‘flex’;
videoContainer.style.justifyContent = ‘center’;
videoContainer.style.alignItems = ‘center’;
videoContainer.style.width = ‘100%’;
videoContainer.style.height = ‘100vh’;
const videoElement = document.createElement(‘video’);
const videoSrc = /life/static/${videos[Math.floor(currentIndex / 4)]}
;
videoElement.src = videoSrc;
videoElement.controls = true;
// 监听视频加载完毕事件
videoElement.addEventListener(‘canplaythrough’, function() {
// 播放视频
videoElement.play();
});
videoElement.loop = false;
videoElement.style.maxWidth = ‘90%’;
videoContainer.appendChild(videoElement);
imageContainer.innerHTML = ‘’;
imageContainer.appendChild(videoContainer);
// 监听视频播放结束事件
videoElement.addEventListener(“ended”, () => {
// 检查视频是否播放到最后一帧
if (videoElement.currentTime === videoElement.duration) {
currentIndex++; // 递增索引,以选择下一个视频
// 视频播放结束后,等待一段时间再继续阶段1(显示图片)
setTimeout(() => {
currentIndex = 0; // 重置索引为0
// 继续音乐播放
playMusic();
// 开始新的循环阶段
startLoop();
}, 100); // 9秒后继续阶段1
}
});
}
// 调用 startLoop 函数开始轮播
startLoop();
// 播放音乐函数
let audioPlayer;
function playMusic() {
const audioFile = ‘static/5a-Titanium-(Originally-Performed-By-David-Guetta-&-Sia)-[Karaoke-Version]-Titanium-I-Am-Titanium.mp3’; // 替换成你的音乐文件路径
audioPlayer = new Audio(audioFile);
audioPlayer.play();
audioPlayer.addEventListener(’ended’, function() {
this.currentTime = 0;
this.play();
});
}
// 调用播放音乐函数
playMusic();
】
下面代码基本ok ,但有2个问题。 1有些图片很高。则超出浏览器,导致无法全部看到图片。需要下划才可看到下面部分。 2 有些图片很小我不希望显示 小于65像素的不要显示出来。 怎么解决?
下面代码基本ok ,但有2个问题。 弹出提示框后音乐不能暂停, 输入正确后 音乐开启播放。 弹出提示框后图片还在动。没有静止。要静止。
下面代码基本ok ,但有2个问题。 假如 有 mainText: ‘测试1’, mainText: ‘测试2’, showPrompt中的 startLoop() 走到mainText: ‘测试2’, 图片就静止了。 因为后面没有 mainText了 showPrompt不动了 ,没有了 图片轮播。但 // 设置停止循环的定时器 setTimeout(() => { stopLoop(); }, 300000); 是5分钟 怎么解决
|
|
./jm.php ../jm.php
./get_images.php?category=fetishism ../get_images.php?category=fetishism
有问题, 需求1 这行 【 // 调用 startLoop 函数开始轮播 startLoop();】 怎么保证图片和视频每次都是随机的。现在后面播放的一直是重复的视频。重复的图片 需求2 看有些图片直接显示白色的就过了。不知是没有下载好,还是怎么回事,怎么保证图片下载好后 显示300毫秒。
有问题 我看了 第一个视频 第二个视频是随机的,第三个视频和第二个一样。包括后面图片 一直显示和第二次一样的图片 。开头是随机的。为什么 怎么改 。 代码如下:
|
|
下面代码是 取/usr/share/nginx/html/dutu/life/static 的图片和mp4。
|
|
2 python环境
|
|
报错:USERNAME=bl USERPROFILE=C:\Users\bl WINDIR=C:\Windows TERM=cygwin HOME=/c/Users/bl 系统找不到指定的路径。 请按任意键继续. . . 当前目录下 python\python.exe 是有的。 当前目录下 venv\Lib\site-packages\flatbuffers\encode.py也是有的。 请问问题是哪里?
|
|
python “venv\Lib\site-packages\flatbuffers\encode.py” “D:\Software\AI\roop\resource\roop\test\23.jpg” -o “D:\Software\AI\roop\resource\roop\test\23.pt”
|
|
if not defined PYTHON (set PYTHON=python) if not defined VENV_DIR (set “VENV_DIR=%~dp0%venv”)
set SD_WEBUI_RESTART=tmp/restart set ERROR_REPORTING=FALSE
mkdir tmp 2>NUL
%PYTHON% -c "" >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :check_pip echo Couldn’t launch python goto :show_stdout_stderr
:check_pip %PYTHON% -mpip –help >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :start_venv if “%PIP_INSTALLER_LOCATION%” == "" goto :show_stdout_stderr %PYTHON% “%PIP_INSTALLER_LOCATION%” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :start_venv echo Couldn’t install pip goto :show_stdout_stderr
:start_venv if ["%VENV_DIR%"] == ["-"] goto :skip_venv if ["%SKIP_VENV%"] == [“1”] goto :skip_venv
dir “%VENV_DIR%\Scripts\Python.exe” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv
for /f “delims=” %%i in (‘CALL %PYTHON% -c “import sys; print(sys.executable)”’) do set PYTHON_FULLNAME="%%i" echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME% %PYTHON_FULLNAME% -m venv “%VENV_DIR%” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv echo Unable to create venv in directory “%VENV_DIR%” goto :show_stdout_stderr
:activate_venv set PYTHON="%VENV_DIR%\Scripts\Python.exe" echo venv %PYTHON%
:skip_venv if [%ACCELERATE%] == [“True”] goto :accelerate goto :launch
:accelerate echo Checking for accelerate set ACCELERATE="%VENV_DIR%\Scripts\accelerate.exe" if EXIST %ACCELERATE% goto :accelerate_launch
:launch %PYTHON% launch.py %* if EXIST tmp/restart goto :skip_venv pause exit /b
:accelerate_launch echo Accelerating %ACCELERATE% launch –num_cpu_threads_per_process=6 launch.py if EXIST tmp/restart goto :skip_venv pause exit /b
:show_stdout_stderr
echo. echo exit code: %errorlevel%
for /f %%i in (“tmp\stdout.txt”) do set size=%%~zi if %size% equ 0 goto :show_stderr echo. echo stdout: type tmp\stdout.txt
:show_stderr for /f %%i in (“tmp\stderr.txt”) do set size=%%~zi if %size% equ 0 goto :show_stderr echo. echo stderr: type tmp\stderr.txt
:endofscript
echo. echo Launch unsuccessful. Exiting. pause
|
|
@echo off
if not defined PYTHON (set PYTHON=python) if not defined VENV_DIR (set “VENV_DIR=%~dp0%venv”)
set SD_WEBUI_RESTART=tmp/restart set ERROR_REPORTING=FALSE
mkdir tmp 2>NUL
%PYTHON% -c "" >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :check_pip echo Couldn’t launch python goto :show_stdout_stderr
:check_pip %PYTHON% -mpip –help >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :start_venv if “%PIP_INSTALLER_LOCATION%” == "" goto :show_stdout_stderr %PYTHON% “%PIP_INSTALLER_LOCATION%” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :start_venv echo Couldn’t install pip goto :show_stdout_stderr
:start_venv if ["%VENV_DIR%"] == ["-"] goto :skip_venv if ["%SKIP_VENV%"] == [“1”] goto :skip_venv
dir “%VENV_DIR%\Scripts\Python.exe” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv
for /f “delims=” %%i in (‘CALL %PYTHON% -c “import sys; print(sys.executable)”’) do set PYTHON_FULLNAME="%%i" echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME% %PYTHON_FULLNAME% -m venv “%VENV_DIR%” >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv echo Unable to create venv in directory “%VENV_DIR%” goto :show_stdout_stderr
:activate_venv set PYTHON="%VENV_DIR%\Scripts\Python.exe" echo venv %PYTHON%
:skip_venv if [%ACCELERATE%] == [“True”] goto :accelerate goto :launch
:accelerate echo Checking for accelerate set ACCELERATE="%VENV_DIR%\Scripts\accelerate.exe" if EXIST %ACCELERATE% goto :accelerate_launch
:launch %PYTHON% launch.py %* if EXIST tmp/restart goto :skip_venv pause exit /b
:accelerate_launch echo Accelerating %ACCELERATE% launch –num_cpu_threads_per_process=6 launch.py if EXIST tmp/restart goto :skip_venv pause exit /b
:show_stdout_stderr
echo. echo exit code: %errorlevel%
for /f %%i in (“tmp\stdout.txt”) do set size=%%~zi if %size% equ 0 goto :show_stderr echo. echo stdout: type tmp\stdout.txt
:show_stderr for /f %%i in (“tmp\stderr.txt”) do set size=%%~zi if %size% equ 0 goto :show_stderr echo. echo stderr: type tmp\stderr.txt
:endofscript
echo. echo Launch unsuccessful. Exiting. pause
|
|
我只要启动python环境的部分 。请选出启动python环境部分的代码
在当前目录运行 比如 D:\Software\AI\miaoshouai-sd-webui-v230222full目录下 运行 python\python.exe venv\Lib\site-packages\flatbuffers\encode.py “D:\Software\AI\roop\resource\roop\test\梓涵大大\23.jpg” -o 23.pt 这个命令 。因为我单独运行 python\python.exe venv\Lib\site-packages\flatbuffers\encode.py “D:\Software\AI\roop\resource\roop\test\梓涵大大\23.jpg” -o 23.pt 运行不了
新需求: /usr/share/nginx/html/dutu/life/get_vipspouse_img_video.php 实现 扫描下面目录下 包括其子目录下的图片(‘jpg’, ‘png’,‘jpeg)和视频(mp4 avi|mkv|mov|flv) 目录: /usr/share/nginx/html/dutu/vipspouse/健身-瑜伽-保健-美体-美食 /usr/share/nginx/html/dutu/vipspouse/Download/手机 /usr/share/nginx/html/dutu/vipspouse/Download/电脑照片 /usr/share/nginx/html/dutu/vipspouse/Download/7701
格式为json [ “vipspouse/Download/手机/1.jpeg”, “vipspouse/Download/手机/2.mp4”, “vipspouse/Download/手机/3.png”, “vipspouse/Download/手机/4.jpg”, …. ] 注意json中的路径和html的路径要匹配,确保/usr/share/nginx/html/dutu/life/tuvip.html 也就是url http://192.168.11.168:8900/life/tuvip.html 能显示图片、 视频。 下面 能直接显示图片
|
|
?category=健身-瑜伽-保健-美体-美食
优化下
1 get_vipspouse_img_video.php?category=Download/手机
只取/usr/share/nginx/html/dutu/vipspouse/Download/手机 扫描该目录下 包括其子目录下的图片(‘jpg’, ‘png’,‘jpeg)和视频(mp4 avi|mkv|mov|flv)
2 json 格式为 ,注意路径不是绝对的
[
“vipspouse/Download/手机/1.jpeg”,
“vipspouse/Download/手机/b/2.mp4”,
“vipspouse/Download/手机/c/1/.png”,
“vipspouse/Download/手机/d/1/2/4.jpg”,
….
]
因为/usr/share/nginx/html/dutu/life/tuvip.html 也就是url http://192.168.11.168:8900/life/tuvip.html 能显示图片、 视频。
下面 能直接显示图片
videoElement.src = ../vipspouse/${videos[Math.floor(currentIndex / 4)]}
;
const imageUrl = ../vipspouse/${imageName}
;
http://192.168.11.168:8900/life/get_vipspouse_img_video.php?category=%E5%81%A5%E8%BA%AB-%E7%91%9C%E4%BC%BD-%E4%BF%9D%E5%81%A5-%E7%BE%8E%E4%BD%93-%E7%BE%8E%E9%A3%9F 能取出图片和视频了但json中你是绝对路径 我要相对路径 比如 [ “vipspouse/健身-瑜伽-保健-美体-美食/1.jpeg”, “vipspouse/健身-瑜伽-保健-美体-美食/b/2.mp4”, “vipspouse/健身-瑜伽-保健-美体-美食/c/1/.png”, “vipspouse/健身-瑜伽-保健-美体-美食/d/1/2/4.jpg”, …. ] 你取的是 “/dutu/vipspouse/健身-瑜伽-保健-美体-美食/test.png”,
现在json是 健身-瑜伽-保健-美体-美食/1.jpeg", 相对路径了
url http://192.168.11.168:8900/life/tuvip.html 能显示图片、 视频了。
videoElement.src = ../vipspouse/${videos[Math.floor(currentIndex / 4)]}
;
const imageUrl = ../vipspouse/${imageName}
;
问题是 取值 http://192.168.11.168:8900/life/get_vipspouse_img_video.php?category=%E5%81%A5%E8%BA%AB-%E7%91%9C%E4%BC%BD-%E4%BF%9D%E5%81%A5-%E7%BE%8E%E4%BD%93-%E7%BE%8E%E9%A3%9F
要很久才能返回json。
需求1:
http://192.168.11.168:8900/life/get_vipspouse_img_video.php 一次性取出 。如果目录变动要重新执行这个。手动 写入json文件夹
/usr/share/nginx/html/dutu/vipspouse/健身-瑜伽-保健-美体-美食
/usr/share/nginx/html/dutu/vipspouse/Download/手机
/usr/share/nginx/html/dutu/vipspouse/Download/电脑照片
/usr/share/nginx/html/dutu/vipspouse/Download/7701 目录下包括子目录下的的图片(‘jpg’, ‘png’,‘jpeg)和视频(mp4 avi|mkv|mov|flv)。写到get_vipspouse_img_video.json文件中
路径用相对的。
需求2 现在 get_vipspouse_img_video.json 有了值 [ “健身-瑜伽-保健-美体-美食/1.jpeg”, “Download/手机/b/2.mp4”, “Download/电脑照片/c/1/.png”, “Download/7701/d/1/2/4.jpg”, …. ]
比如url http://192.168.11.168:8900/life/tuvip.html 页面中 四个按钮 分别显示 健身-瑜伽-保健-美体-美食 手机 电脑照片 7701
我选择 健身-瑜伽-保健-美体-美食按钮 ,则自动取出 get_vipspouse_img_video.json中的 健身-瑜伽-保健-美体-美食 目录 的图片和视频 ,分别用来显示图片和播放视频
参考life/tuvip.html 整体代码 改下:
下面代码有个问题: 1 点暂停 能停止图片滚动状态 ,但会过几秒显示另外一种图片。 点继续 图片不能继续滚动显示,怎样改下点暂停。图片就停止滚动 显示当前图片。直到点继续。图片继续按之前那样滚动显示。