diff --git a/src/player/video.rs b/src/player/video.rs index 0e111d0..32f5973 100644 --- a/src/player/video.rs +++ b/src/player/video.rs @@ -1,9 +1,9 @@ //! 視頻播放核心實現 use anyhow::{Context, Result}; +use std::collections::VecDeque; use std::path::Path; use std::sync::{Arc, Mutex}; -use std::collections::VecDeque; use crate::player::ffmpeg::{FFmpegDecoder, VideoInfo}; @@ -44,12 +44,12 @@ impl VideoPlayer { pub fn open(&mut self, path: &str) -> Result<()> { let decoder = FFmpegDecoder::new(Path::new(path)) .with_context(|| format!("Failed to open video: {}", path))?; - + self.info = Some(decoder.get_info()); self.decoder = Some(decoder); self.state = PlayState::Stopped; self.current_frame = 0; - + Ok(()) } @@ -73,8 +73,8 @@ impl VideoPlayer { } pub fn seek_frame(&mut self, frame: u64) -> Result<()> { - if let Some(ref decoder) = self.decoder { - if let Some(info) = &self.info { + if let Some(ref mut decoder) = self.decoder { + if let Some(ref info) = self.info { let timestamp_ms = (frame * 1000) / info.fps as u64; decoder.seek(timestamp_ms)?; self.current_frame = frame; @@ -84,9 +84,9 @@ impl VideoPlayer { } pub fn seek_time(&mut self, ms: u64) -> Result<()> { - if let Some(ref decoder) = self.decoder { + if let Some(ref mut decoder) = self.decoder { decoder.seek(ms)?; - if let Some(info) = &self.info { + if let Some(ref info) = self.info { self.current_frame = (ms * info.fps as u64) / 1000; } }