| ffm_seek | R Documentation |
Keep one continuous section of the input with FFmpeg's fast -ss and
-to seek options. It does not use the trim filter of
ffm_trim. Unlike the filter, seeking can use stream copy, so it
is the tool for fast, lossless cuts. The glossary in
vignette("tidymedia") explains media terms such as keyframe,
re-encode and stream copy.
ffm_seek(object, start = NULL, end = NULL, reencode = TRUE)
object |
An FFmpeg pipeline ( |
start |
The start of the kept section, in seconds or in FFmpeg time
duration syntax. |
end |
The end of the kept section, in seconds or in FFmpeg time duration
syntax. |
reencode |
A logical. |
The reencode argument trades accuracy against speed:
reencode = TRUE (the default) is frame-accurate. The
section is re-encoded, so it starts and ends on the exact frames you ask
for. This is the safe default.
reencode = FALSE is a fast, lossless copy. But the
cut points move to the nearest keyframes. So the output duration can
differ from the request by up to the gap between two keyframes. Use it
with ffm_copy for the fastest path.
object with an added instruction to cut the input by seeking.
https://ffmpeg.org/ffmpeg.html#Main-options
ffm_trim() for the filter that cuts, ffm_copy() for the fast
copy path, and segment_video(), the task function built on it.
Other pipeline functions:
ffm_batch(),
ffm_codec(),
ffm_compile(),
ffm_concat(),
ffm_copy(),
ffm_crop(),
ffm_drawbox(),
ffm_drop(),
ffm_files(),
ffm_fps(),
ffm_hstack(),
ffm_jobs(),
ffm_loudnorm(),
ffm_map(),
ffm_output_options(),
ffm_overlay(),
ffm_pixel_format(),
ffm_run(),
ffm_scale(),
ffm_trim(),
ffm_vstack(),
print.tidymedia_ffm()
video <- system.file("extdata", "sample.mp4", package = "tidymedia")
# Fast, lossless copy cut (snaps to keyframes)
ffm_files(video, "output.mp4") |>
ffm_seek(start = 1, end = 5, reencode = FALSE) |>
ffm_copy() |>
ffm_compile()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.