fix: conditionally disable audio track merging
This commit is contained in:
parent
0475c52529
commit
dd2616f0e5
2 changed files with 30 additions and 13 deletions
11
src/main.rs
11
src/main.rs
|
@ -94,6 +94,7 @@ struct Tyrolienne {
|
|||
step: Step,
|
||||
progress: usize,
|
||||
total: usize,
|
||||
can_merge: bool,
|
||||
video_path: Option<PathBuf>,
|
||||
out_filename: Option<String>,
|
||||
out_codec: ffmpeg::Codec,
|
||||
|
@ -116,7 +117,7 @@ impl Tyrolienne {
|
|||
config: self.config.clone(),
|
||||
out_filename: self.out_filename.clone(),
|
||||
out_codec: self.out_codec,
|
||||
merge_tracks: self.merge_tracks,
|
||||
merge_tracks: self.can_merge && self.merge_tracks,
|
||||
video_path: self.video_path.clone(),
|
||||
folder: self.folder.clone(),
|
||||
}
|
||||
|
@ -190,7 +191,10 @@ impl AsyncComponent for Tyrolienne {
|
|||
|
||||
adw::SwitchRow {
|
||||
set_title: "Merge audio tracks",
|
||||
set_active: true,
|
||||
#[watch]
|
||||
set_sensitive: model.can_merge,
|
||||
#[watch]
|
||||
set_active: model.can_merge && model.merge_tracks,
|
||||
connect_active_notify[sender] => move |s| sender.input(Message::SetMergeTracks(s.is_active())),
|
||||
},
|
||||
|
||||
|
@ -246,6 +250,7 @@ impl AsyncComponent for Tyrolienne {
|
|||
step: Step::Waiting,
|
||||
progress: 0,
|
||||
total: 1,
|
||||
can_merge: false,
|
||||
video_path: None,
|
||||
out_filename: None,
|
||||
out_codec: ffmpeg::Codec::VP9,
|
||||
|
@ -306,6 +311,8 @@ impl AsyncComponent for Tyrolienne {
|
|||
.await;
|
||||
|
||||
if let Some(file) = file {
|
||||
let meta = ffmpeg::get_video_meta(file.path()).await;
|
||||
self.can_merge = meta.map(|m| m.audio_streams == 2).unwrap_or(false);
|
||||
self.video_path = Some(file.path().to_owned());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue