pub struct CrossfadeJoiner { /* private fields */ }Expand description
Joins two video inputs with a cross-dissolve transition.
Each input is loaded via a movie= source node. The last
dissolve_duration seconds of input A overlap with the first
dissolve_duration seconds of input 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![input_a, input_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::CrossfadeJoiner;
use std::time::Duration;
let mut graph = CrossfadeJoiner::new("intro.mp4", "main.mp4", Duration::from_secs(1))
.build()?;
while let Some(frame) = graph.pull_video()? {
// encode or display `frame`
}Implementations§
Source§impl CrossfadeJoiner
impl CrossfadeJoiner
Sourcepub fn new(
input_a: impl AsRef<Path>,
input_b: impl AsRef<Path>,
dissolve_duration: Duration,
) -> Self
pub fn new( input_a: impl AsRef<Path>, input_b: impl AsRef<Path>, dissolve_duration: Duration, ) -> Self
Create a new CrossfadeJoiner.
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 CrossfadeJoiner
impl RefUnwindSafe for CrossfadeJoiner
impl Send for CrossfadeJoiner
impl Sync for CrossfadeJoiner
impl Unpin for CrossfadeJoiner
impl UnsafeUnpin for CrossfadeJoiner
impl UnwindSafe for CrossfadeJoiner
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