feat(player): update video player
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user