pub struct SubtitleFilter { /* private fields */ }Expand description
Burns ASS/SRT subtitles onto video frames inside a frame pipeline.
Build one with SubtitleFilter::builder, then attach it to an output
(recommended: subtitles are rendered against the final, post-filter-graph
geometry) via a frame pipeline:
ⓘ
use ez_ffmpeg::filter::frame_pipeline_builder::FramePipelineBuilder;
use ez_ffmpeg::subtitle::SubtitleFilter;
use ez_ffmpeg::{AVMediaType, FfmpegContext, Output};
let filter = SubtitleFilter::builder()
.ass_content(ass_script)
.build()?;
let pipeline: FramePipelineBuilder = AVMediaType::AVMEDIA_TYPE_VIDEO.into();
FfmpegContext::builder()
.input("input.mp4")
.output(Output::from("output.mp4")
.add_frame_pipeline(pipeline.filter("subtitles", Box::new(filter))))
.build()?.start()?.wait()?;Timing comes from each frame’s pts × time_base (the scheduler keeps
both valid on either pipeline side), so subtitle timestamps line up with
the post-filter-graph timeline exactly like FFmpeg’s own subtitles
filter.
Implementations§
Source§impl SubtitleFilter
impl SubtitleFilter
Sourcepub fn builder() -> SubtitleFilterBuilder
pub fn builder() -> SubtitleFilterBuilder
Starts configuring a subtitle filter.
Trait Implementations§
Source§impl Debug for SubtitleFilter
impl Debug for SubtitleFilter
Source§impl FrameFilter for SubtitleFilter
impl FrameFilter for SubtitleFilter
Source§fn media_type(&self) -> AVMediaType
fn media_type(&self) -> AVMediaType
Returns the media type this filter operates on. Read more
Source§fn filter_frame(
&mut self,
frame: Frame,
_ctx: &FrameFilterContext<'_>,
) -> Result<Option<Frame>, String>
fn filter_frame( &mut self, frame: Frame, _ctx: &FrameFilterContext<'_>, ) -> Result<Option<Frame>, String>
Processes a single frame through the filter. Read more
Source§fn uninit(&mut self, _ctx: &FrameFilterContext<'_>)
fn uninit(&mut self, _ctx: &FrameFilterContext<'_>)
Cleans up the filter. Read more
Source§fn init(&mut self, ctx: &FrameFilterContext<'_>) -> Result<(), String>
fn init(&mut self, ctx: &FrameFilterContext<'_>) -> Result<(), String>
Initializes the filter. Read more
Source§fn request_frame(
&mut self,
_ctx: &FrameFilterContext<'_>,
) -> Result<Option<Frame>, String>
fn request_frame( &mut self, _ctx: &FrameFilterContext<'_>, ) -> Result<Option<Frame>, String>
Requests a frame from the filter. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for SubtitleFilter
impl !Sync for SubtitleFilter
impl !UnwindSafe for SubtitleFilter
impl Freeze for SubtitleFilter
impl Send for SubtitleFilter
impl Unpin for SubtitleFilter
impl UnsafeUnpin for SubtitleFilter
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