ai-jiggle-video
A helpful Elixir library for programmatically applying subtle, randomized movements to video frames, creating a "jiggle" effect. This can be useful for adding dynamism or simulating hand-held camera footage.
Installation
Add ai_jiggle_video to your list of dependencies in mix.exs:
elixir
def deps do
[
{:ai_jiggle_video, "~> 0.1.0"} # Replace with the actual version] end
Then, run mix deps.get to fetch the dependency.
Usage Examples
This library provides functions to manipulate video frames based on configurable parameters. Here are a few examples:
1. Basic Jiggle: elixir frame = %{width: 640, height: 480, data: "binary_frame_data"} # Example frame data
jiggled_frame = AiJiggleVideo.jiggle_frame(frame)
jiggled_frame now contains the modified frame data.
2. Custom Jiggle Intensity: elixir frame = %{width: 640, height: 480, data: "binary_frame_data"}
jiggled_frame = frame |> AiJiggleVideo.jiggle_frame(%{intensity: 0.75}) # Intensity between 0.0 and 1.0
jiggled_frame now contains the modified frame with the specified intensity.
3. Applying Jiggle to a Sequence of Frames (using Enum.map): elixir frames = [%{width: 640, height: 480, data: "frame_1"}, %{width: 640, height: 480, data: "frame_2"}]
jiggled_frames = frames |> Enum.map(&AiJiggleVideo.jiggle_frame(&1, %{intensity: 0.5, frequency: 2}))
jiggled_frames now contains the list of modified frames.
4. Pattern Matching for Specific Frame Types: elixir defmodule VideoProcessor do def process_frame(%{type: :i_frame, data: data} = frame) do
AiJiggleVideo.jiggle_frame(frame, %{intensity: 0.8})end
def process_frame(frame) do
# Handle other frame types (e.g., P-frames, B-frames) without jiggle
frameend end
frame = %{type: :i_frame, width: 640, height: 480, data: "i_frame_data"}
jiggled_frame = VideoProcessor.process_frame(frame)
5. Piping with Custom Configuration: elixir frame = %{width: 640, height: 480, data: "binary_frame_data"}
jiggled_frame = frame |> AiJiggleVideo.configure_jiggle(%{intensity: 0.6, x_offset: 5, y_offset: 3}) |> AiJiggleVideo.jiggle_frame()
Feature Summary
- Simple API: Easy-to-use functions for applying jiggle effects.
- Configurable Intensity: Control the amount of jiggle applied.
- Frame-Based Operation: Designed to work with individual video frames.
- Customizable Offsets: Fine-tune the horizontal and vertical movement.
- Extensible: Easily integrate with existing video processing pipelines.
License
MIT
This package is part of the ai-jiggle-video ecosystem. For advanced features and enterprise-grade tools, visit: https://supermaker.ai/video/ai-jiggle-video/