Operations Module

This module contains various video operations.

Basic Operations

Basic video operations for FMUS-VID.

This module provides fundamental video manipulation functions.

fmusvid.operations.basic.video_to_images(video, output_dir, start=None, end=None, interval=None, frame_count=None, with_timestamp=False, with_frame_number=False, format='png', prefix='frame_', **kwargs)[source]

Extract frames from a video to image files.

Parameters:
  • video (Union[str, Path, Video]) – Video object or path to video file

  • output_dir (Union[str, Path]) – Directory to save the images

  • start (Optional[float]) – Start time in seconds (None for beginning)

  • end (Optional[float]) – End time in seconds (None for end of video)

  • interval (Optional[float]) – Time interval between frames in seconds

  • frame_count (Optional[int]) – Number of frames to extract (evenly distributed)

  • with_timestamp (bool) – Add timestamp text overlay to images

  • with_frame_number (bool) – Add frame number text overlay to images

  • format (str) – Image format (‘png’, ‘jpg’, etc.)

  • prefix (str) – Filename prefix for the saved images

  • **kwargs – Additional options

Return type:

List[Path]

Returns:

List of paths to the saved images

Example

>>> # Extract all frames
>>> frames = fmusvid.video_to_images("input.mp4", "frames_dir")
>>> # Extract 10 evenly distributed frames
>>> frames = fmusvid.video_to_images("input.mp4", "frames_dir", frame_count=10)
>>> # Extract frames at 1-second intervals with timestamps
>>> frames = fmusvid.video_to_images("input.mp4", "frames_dir", interval=1.0, with_timestamp=True)
fmusvid.operations.basic.reverse_video(video, output=None, **kwargs)[source]

Create a reversed version of a video.

Parameters:
  • video (Union[str, Path, Video]) – Video object or path to video file

  • output (Union[str, Path, None]) – Path to save the reversed video (None for temporary file)

  • **kwargs – Additional options

Return type:

Video

Returns:

Video object for the reversed video

Example

>>> # Create reversed video
>>> reversed_video = fmusvid.reverse_video("input.mp4", "reversed.mp4")
fmusvid.operations.basic.create_thumbnails(video, count=9, output_path=None, grid=True, scale=0.25, with_timestamp=True, **kwargs)[source]

Generate thumbnail images from a video.

Parameters:
  • video (Union[str, Path, Video]) – Video object or path to video file

  • count (int) – Number of thumbnails to generate

  • output_path (Union[str, Path, None]) – Path to save the grid image or directory for individual thumbnails

  • grid (bool) – Whether to combine thumbnails into a grid image

  • scale (float) – Scale factor for the thumbnails

  • with_timestamp (bool) – Add timestamp to the thumbnails

  • **kwargs – Additional options

Return type:

Union[List[Path], Path]

Returns:

Path to grid image if grid=True, otherwise list of paths to individual thumbnails

Example

>>> # Create a 3x3 grid of thumbnails
>>> grid_path = fmusvid.create_thumbnails("input.mp4", count=9, output_path="thumbs.jpg")
>>> # Create individual thumbnails
>>> thumb_paths = fmusvid.create_thumbnails("input.mp4", count=5, grid=False, output_path="thumbs_dir")

Composition Operations

Composition operations for FMUS-VID.

This module provides functions for combining multiple videos or images.

fmusvid.operations.composition.images_to_video(images, output, fps=30.0, **kwargs)[source]

Convert a sequence of images to a video.

Parameters:
  • images (Union[List[Union[str, Path]], Path]) – List of image paths or directory containing images

  • output (Union[str, Path]) – Path to save the output video

  • fps (float) – Frames per second

  • **kwargs – Additional options

Return type:

Video

Returns:

Video object for the created video

Example

>>> # From list of images
>>> video = fmusvid.images_to_video(['frame1.png', 'frame2.png', 'frame3.png'], 'output.mp4')
>>> # From directory
>>> video = fmusvid.images_to_video('frames_directory', 'output.mp4', fps=24)
fmusvid.operations.composition.side_by_side(videos, output=None, **kwargs)[source]

Arrange videos horizontally side by side.

Parameters:
  • videos (List[Video]) – List of Video objects

  • output (Union[str, Path, None]) – Path to save the output video (optional)

  • **kwargs – Additional options

Return type:

Video

Returns:

New Video object with side-by-side arrangement

Example

>>> comparison = fmusvid.side_by_side([video1, video2, video3])
>>> comparison.save("comparison.mp4")

Transition Effects

Transition effects for FMUS-VID.

This module provides various transition effects for videos, including fades, dissolves, wipes, and other common transitions.

class fmusvid.operations.transitions.Transition(duration=1.0)[source]

Base class for video transitions.

__init__(duration=1.0)[source]

Initialize transition.

Parameters:

duration (float) – Transition duration in seconds

apply(frame1, frame2, progress)[source]

Apply transition between two frames.

Parameters:
  • frame1 (ndarray) – First frame (previous frame)

  • frame2 (ndarray) – Second frame (next frame)

  • progress (float) – Transition progress from 0.0 to 1.0

Return type:

ndarray

Returns:

Blended frame

class fmusvid.operations.transitions.FadeTransition(duration=1.0, fade_to_black=True)[source]

Fade transition (fade out/in).

__init__(duration=1.0, fade_to_black=True)[source]

Initialize fade transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • fade_to_black (bool) – If True, fade through black; if False, direct crossfade

apply(frame1, frame2, progress)[source]

Apply fade transition.

Return type:

ndarray

class fmusvid.operations.transitions.DissolveTransition(duration=1.0, mode='simple')[source]

Dissolve transition (crossfade with optional effects).

__init__(duration=1.0, mode='simple')[source]

Initialize dissolve transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • mode (str) – Dissolve mode (‘simple’, ‘zoom’, ‘blur’)

apply(frame1, frame2, progress)[source]

Apply dissolve transition.

Return type:

ndarray

class fmusvid.operations.transitions.WipeTransition(duration=1.0, direction='left-to-right')[source]

Wipe transition (one frame wipes over the other).

__init__(duration=1.0, direction='left-to-right')[source]

Initialize wipe transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • direction (str) – Wipe direction (‘left-to-right’, ‘right-to-left’, ‘top-to-bottom’, ‘bottom-to-top’)

apply(frame1, frame2, progress)[source]

Apply wipe transition.

Return type:

ndarray

class fmusvid.operations.transitions.SlideTransition(duration=1.0, direction='left-to-right')[source]

Slide transition (frames slide in/out).

__init__(duration=1.0, direction='left-to-right')[source]

Initialize slide transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • direction (str) – Slide direction (‘left-to-right’, ‘right-to-left’, ‘top-to-bottom’, ‘bottom-to-top’)

apply(frame1, frame2, progress)[source]

Apply slide transition.

Return type:

ndarray

class fmusvid.operations.transitions.PixelateTransition(duration=1.0, max_pixel_size=50)[source]

Pixelate transition (image pixelates and forms new image).

__init__(duration=1.0, max_pixel_size=50)[source]

Initialize pixelate transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • max_pixel_size (int) – Maximum pixel size during pixelation

apply(frame1, frame2, progress)[source]

Apply pixelate transition.

Return type:

ndarray

class fmusvid.operations.transitions.ZoomTransition(duration=1.0, zoom_factor=2.0)[source]

Zoom transition (zoom in on first frame, zoom out on second).

__init__(duration=1.0, zoom_factor=2.0)[source]

Initialize zoom transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • zoom_factor (float) – Maximum zoom factor

apply(frame1, frame2, progress)[source]

Apply zoom transition.

Return type:

ndarray

class fmusvid.operations.transitions.RotateTransition(duration=1.0, direction='horizontal')[source]

Rotate transition (3D flip effect).

__init__(duration=1.0, direction='horizontal')[source]

Initialize rotate transition.

Parameters:
  • duration (float) – Transition duration in seconds

  • direction (str) – Rotation direction (‘horizontal’ or ‘vertical’)

apply(frame1, frame2, progress)[source]

Apply rotate/flip transition.

Return type:

ndarray

fmusvid.operations.transitions.get_transition(name, **kwargs)[source]

Factory function to create a transition by name.

Parameters:
  • name (str) – Transition name

  • **kwargs – Parameters for the transition

Return type:

Transition

Returns:

Transition object

Text and Subtitles

Subtitle support for FMUS-VID.

This module provides functionality for adding and manipulating subtitles.

class fmusvid.operations.subtitle.SubtitleEntry(start_time, end_time, text, position=None)[source]

Represents a single subtitle entry.

start_time: float
end_time: float
text: str
position: Optional[Tuple[int, int]] = None
__init__(start_time, end_time, text, position=None)
class fmusvid.operations.subtitle.SubtitleParser[source]

Parser for various subtitle formats.

static parse(path, format=None)[source]

Parse a subtitle file.

Parameters:
  • path (Union[str, Path]) – Path to subtitle file

  • format (Optional[str]) – Subtitle format (“srt”, “vtt”, etc.) or None for auto-detect

Return type:

List[SubtitleEntry]

Returns:

List of SubtitleEntry objects

class fmusvid.operations.subtitle.SubtitleRenderer(entries, font='Arial', size=24, color='white', stroke_width=2, stroke_color='black', position=None, fade_in=0.25, fade_out=0.25)[source]

Renders subtitles on video frames.

__init__(entries, font='Arial', size=24, color='white', stroke_width=2, stroke_color='black', position=None, fade_in=0.25, fade_out=0.25)[source]

Initialize subtitle renderer.

Parameters:
  • entries (List[SubtitleEntry]) – List of subtitle entries

  • font (str) – Font name or path

  • size (int) – Font size in pixels

  • color (Union[str, Tuple[int, int, int]]) – Text color

  • stroke_width (int) – Outline width (0 for no outline)

  • stroke_color (Union[str, Tuple[int, int, int]]) – Outline color

  • position (Optional[Tuple[int, int]]) – Default (x, y) position (None for bottom center)

  • fade_in (float) – Fade-in duration in seconds

  • fade_out (float) – Fade-out duration in seconds

render(frame, time)[source]

Render subtitles for the current frame.

Parameters:
  • frame (Image) – PIL Image to render on

  • time (float) – Current video time in seconds

Return type:

Image

Returns:

Frame with rendered subtitles

Analysis