PointTrackApp / src /stores /videoStore.js
2nzi's picture
update fps
ae94c0d verified
import { defineStore } from 'pinia'
export const useVideoStore = defineStore('video', {
state: () => ({
videos: [],
selectedVideo: null,
defaultPath: 'C:\\Users\\antoi\\Documents\\Work_Learn\\Stage-Rennes\\RepositoryFootballVision\\SportDETR\\data\\football\\raw',
// defaultPath: '\\\\10.35.51.152\\Biomeca\\Projets\\25_EVA2PERF_M2_AntoineVerdon\\RepositoryFootballVision\\SportDETR\\data\\football\\raw',
currentTime: 0,
isPlaying: false,
duration: 0,
fps: 25, // FPS par défaut changé à 25
// Vidéo par défaut depuis les assets
defaultVideo: null,
isInitialized: false
}),
actions: {
// Initialiser avec une vidéo par défaut si aucune n'est sélectionnée
async initialize() {
if (!this.isInitialized && !this.selectedVideo) {
// Essayer de charger une vidéo par défaut depuis les assets
try {
const defaultVideoPath = require('@/assets/football.mp4')
this.defaultVideo = {
name: 'football',
path: defaultVideoPath,
type: 'video/mp4',
isDefault: true
}
// Ne pas définir automatiquement comme selectedVideo, laisser l'utilisateur choisir
} catch (error) {
console.log('Aucune vidéo par défaut disponible dans les assets')
}
this.isInitialized = true
}
},
setVideos(videos) {
this.videos = videos
},
async setSelectedVideo(video) {
this.selectedVideo = video
},
setCurrentTime(time) {
this.currentTime = time
},
setIsPlaying(isPlaying) {
this.isPlaying = isPlaying
},
setDuration(duration) {
this.duration = duration
},
setFps(fps) {
this.fps = fps
console.log('FPS défini à:', fps)
},
async loadVideosFromFolder() {
// DÉSACTIVÉ - pas de chargement de dossier externe
this.videos = []
return []
},
async loadVideoMetadata(videoPath) {
return new Promise((resolve, reject) => {
const tempVideo = document.createElement('video')
tempVideo.src = videoPath
tempVideo.crossOrigin = 'anonymous'
tempVideo.addEventListener('loadedmetadata', () => {
this.duration = tempVideo.duration
resolve({
duration: tempVideo.duration,
videoElement: tempVideo
})
})
tempVideo.addEventListener('error', (error) => {
console.error('Erreur lors du chargement de la vidéo:', error)
reject(error)
})
})
},
updateProgressBar(time) {
this.currentTime = time
this.emitTimeUpdate(time)
},
emitTimeUpdate(time) {
this.currentTime = time
}
}
})