Код: Выделить всё
srcКод: Выделить всё
index.phpКод: Выделить всё
Your browser does not support HTML5 video.
[img]script.js[/img]
< /code>
script.jsКод: Выделить всё
const video_list = [
["dog.mp4", "cat.mp4", "bird.mp4", "hamster.mp4"]
, ["tokyo.mp4", "berlin.mp4", "france.mp4", "london.mp4"]
, ["gif 1.gif", "gif 2.mp4", "gif 3.gif", "gif 4.gif"]
];
const dir_paths = ["./animals/", "./cities/", "./gifs/"];
const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var clockTimer;
var videoTimeout;
var video = document.getElementById("myVideo");
var GIF = document.getElementById("myGIF");
var media_title = document.getElementById('video_name');
var video_index = 0;
var playlist_index = 0;
function onLoad() {
startTime();
shuffle(video_list[0]);
video.loop = false;
NextMedia();
};
function NextMedia() {
video_index++;
if (video_index >= video_list[0].length) {
video_index = 0;
shuffle(video_list[0]);
}
media_src = dir_paths[0].concat(video_list[0][video_index]);
document.getElementById('video_name').innerHTML = media_src;
setMediaVisibility(media_src);
// Sets the video name text
media_title.innerHTML = video_list[0][video_index];
}
function setMediaVisibility(media_src) {
video.style.visibility = "collapse";
GIF.style.visibility = "collapse";
// Verify if the file is a video
if (media_src.toLowerCase().substr(media_src.length - 4).localeCompare("webm") == 0
|| media_src.toLowerCase().substr(media_src.length - 3).localeCompare("mp4") == 0
|| media_src.toLowerCase().substr(media_src.length - 3).localeCompare("mov") == 0
|| media_src.toLowerCase().substr(media_src.length - 3).localeCompare("avi") == 0) {
video.style.visibility = "visible";
video.src = media_src;
video.play();
}
if (media_src.toLowerCase().substr(media_src.length - 3).localeCompare("gif") == 0
|| media_src.toLowerCase().substr(media_src.length - 3).localeCompare("jpg") == 0
|| media_src.toLowerCase().substr(media_src.length - 4).localeCompare("jpeg") == 0
|| media_src.toLowerCase().substr(media_src.length - 4).localeCompare("webp") == 0) {
GIF.style.visibility = "visible";
GIF.src = media_src;
}
}
function getPlaylist() {
return video_list[playlist_index];
}
function shuffle(array) {
var currentIndex = array.length, randomIndex;
// While there remain elements to shuffle.
while (currentIndex != 0) {
// Pick a remaining element.
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
return array;
};
function startTime() {
clearTimeout(clockTimer);
const today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var day = weekday[today.getDay()];
var date = today.getDate();
var month = today.getMonth() + 1;
var year = today.getFullYear();
h = checkTime(h);
m = checkTime(m);
s = checkTime(s);
date = checkTime(date);
month = checkTime(month);
document.getElementById('time_txt').innerHTML = h + ":" + m + ":" + s;
document.getElementById('date_txt').innerHTML = day + " " + year + "/" + month + "/" + date;
clockTimer = setTimeout(startTime, 1000);
};
function checkTime(i) {
if (i < 10) { i = "0" + i }; // add zero in front of numbers < 10
return i;
};
< /code>
I tried to set the video's srcЯ пытался запустить свой веб -сайт с минимумом для видео (без часов, без списков воспроизведения), и он работает не менее 12 часов, когда дело доходит до GIF (используя элемент IMG). Он также работал для более длинных видео (3-5 минут), потому что я не меняю видео SRC, я думаю. в этом случае) или мой код JavaScript. Сразу после перехода проблема начала появляться. Поэтому я предположил, что это касалось PHP и не исследовал дальнейший исследование с обычным HTML -файлом. Веб -сайт зависает на моем компьютере, пока сервер работает на моем PI. Я все еще могу управлять своим PI, в то время как веб -сайт на моем компьютере заморожен.
Я также попробовал ответ в следующем потоке, но безрезультатно. Тот же результат: как мне изменить SRC видео HTML5 с помощью JavaScript без сбоя Chrome или утечки? Браузер на моей Raspberry Pi 4 8 ГБ оперативной памяти-хром (последний), работающий на Raspbian Release 11 Uname 6.1.21-V8+. Браузер «замораживает», как и в любом действии, которое я делаю, ничего не делает в браузере. Предупреждение о хроме указывает на то, что страница не отвечает и спрашивает, хочу ли я закрыть страницу, которая ничего не делает. Мне нужно ALT+F4 и снова открыть страницу, чтобы снова запустить веб -сайт. Когда он замораживает мой PI, сервер все еще отзывчив и может быть доступен с моего ПК. Вот данные: < /p>
Данные при запуске: s | 173,8% ЦП | 2,6% mem | 2: 05.97 Время+ | Chromium-Browser
Time
CPU%
MEM%
10h04 < /td>
37.0
2.2.2
< /tr>
10h14 < /td>
168.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9. />2.2.8
< /tr>
10h26 < /td>
203.0> />136.2
3.2,2
< /tr>
10h55 < /td>
td>172.1
/> 11h04 < /td>
62.3
2.2.6
< /tr>
11h10 [f] < /td>
freeze < /td>
/> < /tr>
11h20 < /td>
53.6
3.4
< /tr>
< /tbody>
< /table> < /div>
browsher froze at 11h. Я зарегистрировал окончательные данные через 10 минут после замораживания. Этот метод не решил мою проблему, и через некоторое время веб -сайт все еще не отвечал. Я запустил его как простой HTML -файл в своем браузере, а не через Apache, и веб -сайт все еще замораживает. Поэтому это может не быть связано с Apache или моей HTTPS или настройкой PHP. Я полагаю, что ошибка всегда была рядом, и я заметил ее в тот момент по совпадению. Первый - сразу после запуска веб -сайта. Вторая запись - через 4 часа. Here's the comparison table:
At Start
4 hours
8 hours
< /thead>
js heap < /td>
2.8mb - 3,8mb < /td>
3.3.0mb - 4,2mb < /td>
3.3.4mb - 4,3mb < /td>
. />
документы < /td>
1 - 1 < /td>
1 - 2 < /td>
1 - 1 < /td>
< /tr>
< /td>
< /td>
< /td>
1238 < /td>
565 - 1184 < /td>
565 - 1142 < /td>
< /tr>
слушатели < /td>
95 - 127 < /td>
95 - 125 - 125 - 125 - 125 - /> 95 - 521 < /td>
< /tr>
память GPU < /td>
ничего < /td>
ничего < /td>
ничего < /td>
< /tr>
< /td>
< /tr>
/> < /table> < /div>
Я не вижу ничего необычного в этой таблице данных. Возможно, мне придется исследовать это. < /P>
Я попытался использовать «более надежный» видеоплеер. Я использовал видеоплеера Shaka, и Freeze все еще происходит после запуска моего веб -сайта на некоторое время (~ 1 час при изменении источника видео каждые 5 секунд). Возможно, по совпадению, я заметил, что при настройке потокового «Bufferbehind» и «Buffergoal» до более высокого значения, например, 30 и 10, мой веб -сайт замораживает заметно быстрее, чем когда их значения составляют 5 и 2. Он замораживает за ~ 15 минут вместо ~ 1 час.
Подробнее здесь: https://stackoverflow.com/questions/791 ... hp-website
Мобильная версия