feat(player): update video player

This commit is contained in:
2026-03-19 01:26:10 +08:00
parent 487ada4c10
commit 025d62362d

View File

@@ -1,9 +1,9 @@
//! 視頻播放核心實現 //! 視頻播放核心實現
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use std::collections::VecDeque;
use std::path::Path; use std::path::Path;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::collections::VecDeque;
use crate::player::ffmpeg::{FFmpegDecoder, VideoInfo}; use crate::player::ffmpeg::{FFmpegDecoder, VideoInfo};
@@ -73,8 +73,8 @@ impl VideoPlayer {
} }
pub fn seek_frame(&mut self, frame: u64) -> Result<()> { pub fn seek_frame(&mut self, frame: u64) -> Result<()> {
if let Some(ref decoder) = self.decoder { if let Some(ref mut decoder) = self.decoder {
if let Some(info) = &self.info { if let Some(ref info) = self.info {
let timestamp_ms = (frame * 1000) / info.fps as u64; let timestamp_ms = (frame * 1000) / info.fps as u64;
decoder.seek(timestamp_ms)?; decoder.seek(timestamp_ms)?;
self.current_frame = frame; self.current_frame = frame;
@@ -84,9 +84,9 @@ impl VideoPlayer {
} }
pub fn seek_time(&mut self, ms: u64) -> Result<()> { 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)?; 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; self.current_frame = (ms * info.fps as u64) / 1000;
} }
} }