Nahrát soubory do „Script_Speech_recognition“
player script
This commit is contained in:
parent
5e67eb1cf8
commit
38b5bffe21
110
Script_Speech_recognition/videoplayer.js
Normal file
110
Script_Speech_recognition/videoplayer.js
Normal file
@ -0,0 +1,110 @@
|
||||
const inputText = document.getElementById('inputText');
|
||||
const videoPlayer = document.getElementById('translationVideo');
|
||||
const translateWordsBtn = document.getElementById('translateWordsBtn');
|
||||
const translateLettersBtn = document.getElementById('translateLettersBtn');
|
||||
const prevBtn = document.getElementById('prevBtn');
|
||||
const nextBtn = document.getElementById('nextBtn');
|
||||
|
||||
let videoSequence = []; // Array to store video paths
|
||||
let currentIndex = 0; // Track the current video index
|
||||
let autoPlayEnabled = true; // Flag for autoplay
|
||||
|
||||
// Helper function to check if a video file exists
|
||||
function videoExists(src) {
|
||||
return new Promise(resolve => {
|
||||
const video = document.createElement('video');
|
||||
video.src = src;
|
||||
video.onloadeddata = () => resolve(true);
|
||||
video.onerror = () => resolve(false);
|
||||
});
|
||||
}
|
||||
|
||||
// Function to load video sequence based on words
|
||||
async function loadVideoSequenceByWords() {
|
||||
const words = inputText.value.trim().split(' '); // Split input into words
|
||||
videoSequence = [];
|
||||
|
||||
for (const word of words) {
|
||||
const videoSrc = `video/${word.toLowerCase()}.mp4`;
|
||||
if (await videoExists(videoSrc)) {
|
||||
videoSequence.push(videoSrc);
|
||||
}
|
||||
}
|
||||
currentIndex = 0;
|
||||
}
|
||||
|
||||
// Function to load video sequence based on letters
|
||||
async function loadVideoSequenceByLetters() {
|
||||
const characters = inputText.value.trim().split(''); // Split input into characters
|
||||
videoSequence = [];
|
||||
|
||||
for (const char of characters) {
|
||||
// Skip spaces and punctuation
|
||||
if (/[a-zA-Z]/.test(char)) {
|
||||
const videoSrc = `video/pismena/${char.toLowerCase()}.mp4`;
|
||||
if (await videoExists(videoSrc)) {
|
||||
videoSequence.push(videoSrc);
|
||||
}
|
||||
}
|
||||
}
|
||||
currentIndex = 0;
|
||||
}
|
||||
|
||||
// Function to play video at the specified index
|
||||
function playVideoAtIndex(index) {
|
||||
if (index < 0 || index >= videoSequence.length) return;
|
||||
|
||||
videoPlayer.src = videoSequence[index];
|
||||
videoPlayer.play();
|
||||
currentIndex = index;
|
||||
|
||||
if (autoPlayEnabled) {
|
||||
videoPlayer.onended = () => {
|
||||
currentIndex++;
|
||||
if (currentIndex < videoSequence.length) {
|
||||
playVideoAtIndex(currentIndex);
|
||||
} else {
|
||||
autoPlayEnabled = false;
|
||||
}
|
||||
};
|
||||
} else {
|
||||
videoPlayer.onended = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Event listener for the "Preložiť po slovách" button
|
||||
translateWordsBtn.addEventListener('click', async () => {
|
||||
autoPlayEnabled = true;
|
||||
await loadVideoSequenceByWords();
|
||||
if (videoSequence.length > 0) {
|
||||
playVideoAtIndex(currentIndex);
|
||||
}
|
||||
});
|
||||
|
||||
// Event listener for the "Preložiť po písmenách" button
|
||||
translateLettersBtn.addEventListener('click', async () => {
|
||||
autoPlayEnabled = true;
|
||||
await loadVideoSequenceByLetters();
|
||||
if (videoSequence.length > 0) {
|
||||
playVideoAtIndex(currentIndex);
|
||||
}
|
||||
});
|
||||
|
||||
// Event listeners for "Previous" and "Next" buttons
|
||||
prevBtn.addEventListener('click', () => {
|
||||
if (currentIndex > 0) {
|
||||
autoPlayEnabled = false;
|
||||
currentIndex--;
|
||||
playVideoAtIndex(currentIndex);
|
||||
}
|
||||
});
|
||||
|
||||
nextBtn.addEventListener('click', () => {
|
||||
if (currentIndex < videoSequence.length - 1) {
|
||||
autoPlayEnabled = false;
|
||||
currentIndex++;
|
||||
playVideoAtIndex(currentIndex);
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user