aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/snippet.rs
diff options
context:
space:
mode:
Diffstat (limited to 'remuxer/src/snippet.rs')
-rw-r--r--remuxer/src/snippet.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/remuxer/src/snippet.rs b/remuxer/src/snippet.rs
index bc7f190..cc5ec9d 100644
--- a/remuxer/src/snippet.rs
+++ b/remuxer/src/snippet.rs
@@ -5,7 +5,8 @@
*/
use crate::{
- ebml_header, ebml_segment_info, ebml_track_entry, segment_extractor::SegmentExtractIter,
+ ebml_header, ebml_segment_info, ebml_track_entry, seek_index::get_seek_index,
+ segment_extractor::SegmentExtractIter,
};
use anyhow::{anyhow, Context, Result};
use jellycommon::{seek_index::SeekIndex, LocalTrack, NodePublic};
@@ -24,10 +25,10 @@ pub fn snippet_index(
let media_info = item.media.as_ref().unwrap();
let private = &track_sources[track];
let source_path = path_base.join(&private.path);
- let mut index = File::open(source_path.with_extension(format!("si.{}", private.track)))
- .context("opening seek index file")?;
- let index =
- bincode::decode_from_std_read::<SeekIndex, _, _>(&mut index, bincode::config::standard())?;
+ let index = get_seek_index(&source_path)?;
+ let index = index
+ .get(&(private.track as u64))
+ .ok_or(anyhow!("track missing"))?;
let average_kf_interval = media_info.duration / index.keyframes.len() as f64;
let kf_per_snip = (SNIPPET_LENGTH / average_kf_interval).ceil() as usize;
debug!("average keyframe interval: {average_kf_interval}");