pub struct ClipJoiner { /* private fields */ }Expand description
Joins two video clips with a cross-dissolve transition.
Each clip is loaded via a movie= source node. The last
dissolve_duration seconds of clip A overlap with the first
dissolve_duration seconds of clip B, producing an output shorter than
simple concatenation by dissolve_duration.
When dissolve_duration is Duration::ZERO the clips are concatenated
without a transition (equivalent to
[VideoConcatenator::new(vec![clip_a, clip_b]).build()]).
§Errors
Returns FilterError::CompositionFailed when:
- The clip duration cannot be probed (e.g. file not found).
dissolve_durationexceeds the duration of either clip.
§Examples
ⓘ
use ff_filter::ClipJoiner;
use std::time::Duration;
let mut graph = ClipJoiner::new("intro.mp4", "main.mp4", Duration::from_secs(1))
.build()?;
while let Some(frame) = graph.pull_video()? {
// encode or display `frame`
}Implementations§
Source§impl ClipJoiner
impl ClipJoiner
Sourcepub fn new(
clip_a: impl AsRef<Path>,
clip_b: impl AsRef<Path>,
dissolve_duration: Duration,
) -> Self
pub fn new( clip_a: impl AsRef<Path>, clip_b: impl AsRef<Path>, dissolve_duration: Duration, ) -> Self
Create a new ClipJoiner.
dissolve_duration is the length of the cross-dissolve overlap.
Pass Duration::ZERO for plain concatenation (no transition).
Sourcepub fn build(self) -> Result<FilterGraph, FilterError>
pub fn build(self) -> Result<FilterGraph, FilterError>
Builds a source-only FilterGraph that joins the two clips.
§Errors
FilterError::CompositionFailed— clip duration probe failed, ordissolve_durationexceeds a clip’s duration, or anFFmpeggraph-construction call failed.
Auto Trait Implementations§
impl Freeze for ClipJoiner
impl RefUnwindSafe for ClipJoiner
impl Send for ClipJoiner
impl Sync for ClipJoiner
impl Unpin for ClipJoiner
impl UnsafeUnpin for ClipJoiner
impl UnwindSafe for ClipJoiner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more