# grok-video-generator
A powerful Elixir library for programmatically generating videos from various data sources and media assets. Simplifies the creation of dynamic video content within Elixir applications.
## Installation
Add `grok_video_generator` to your list of dependencies in `mix.exs`:
elixir
def deps do
[
{:grok_video_generator, "~> 0.1.0"}
]
end
Then, run `mix deps.get` to fetch the dependencies.
## Usage
Here are some idiomatic Elixir examples demonstrating how to use `grok_video_generator`.
**1. Creating a simple video from images:**
elixir
alias GrokVideoGenerator.Video
image_paths = ["path/to/image1.jpg", "path/to/image2.png", "path/to/image3.jpeg"]
{:ok, video_path} =
Video.create(image_paths)
|> Video.with_duration(5) # Each image displayed for 5 seconds
|> Video.with_output_path("output/simple_video.mp4")
|> Video.render()
IO.puts("Simple video created at: #{video_path}")
**2. Adding text overlays to a video:**
elixir
alias GrokVideoGenerator.Video
alias GrokVideoGenerator.Overlay
video_path = "input/existing_video.mp4"
{:ok, video_path} =
Video.load(video_path)
|> Video.add_overlay(Overlay.text("Hello Elixir!", x: 100, y: 100, font_size: 32))
|> Video.with_output_path("output/video_with_text.mp4")
|> Video.render()
IO.puts("Video with text overlay created at: #{video_path}")
**3. Combining audio with a video:**
elixir
alias GrokVideoGenerator.Video
video_path = "input/silent_video.mp4"
audio_path = "input/background_music.mp3"
{:ok, video_path} =
Video.load(video_path)
|> Video.add_audio(audio_path)
|> Video.with_output_path("output/video_with_audio.mp4")
|> Video.render()
IO.puts("Video with audio created at: #{video_path}")
**4. Cropping and resizing a video:**
elixir
alias GrokVideoGenerator.Video
video_path = "input/large_video.mp4"
{:ok, video_path} =
Video.load(video_path)
|> Video.crop(x: 100, y: 50, width: 640, height: 480)
|> Video.resize(width: 320, height: 240)
|> Video.with_output_path("output/cropped_resized_video.mp4")
|> Video.render()
IO.puts("Cropped and resized video created at: #{video_path}")
**5. Generating a video from a list of slides with transitions:**
elixir
alias GrokVideoGenerator.Video
alias GrokVideoGenerator.Slide
alias GrokVideoGenerator.Transition
slides = [
Slide.image("path/to/slide1.jpg", duration: 5),
Slide.image("path/to/slide2.png", duration: 3),
Slide.image("path/to/slide3.jpeg", duration: 7)
]
{:ok, video_path} =
Video.create(slides)
|> Video.with_transition(Transition.fade(duration: 1))
|> Video.with_output_path("output/slideshow_video.mp4")
|> Video.render()
IO.puts("Slideshow video created at: #{video_path}")
## Feature Summary
* **Video Creation:** Generate videos from images, audio, and other video files.
* **Overlay Support:** Add text, images, and other visual elements as overlays.
* **Audio Integration:** Seamlessly combine audio tracks with video content.
* **Video Manipulation:** Crop, resize, and apply various transformations to videos.
* **Slide Management:** Create videos from a sequence of slides with customizable durations and transitions.
* **Simple API:** Provides an easy-to-use and composable API for building complex video generation workflows.
## License
MIT
This package is part of the grok-video-generator ecosystem. For advanced features and enterprise-grade tools, visit: https://supermaker.ai/blog/grok-ai-video-generator-the-ultimate-guide-to-creating-ai-videos-2025/