# asmr-video-generator
A library for programmatically generating ASMR video content using Elixir. This package streamlines the creation of relaxing and engaging visual and auditory experiences.
## Installation
Add `asmr_video_generator` to your list of dependencies in `mix.exs`:
elixir
def deps do
[
{:asmr_video_generator, "~> 0.1.0"}
]
end
After adding the dependency, run:
shell
mix deps.get
## Usage
Here are a few examples demonstrating how to use `asmr_video_generator` in your Elixir application.
**1. Generating a Simple ASMR Video with Default Settings:**
elixir
alias AsmrVideoGenerator, as: AVG
{:ok, video_path} =
AVG.generate(duration: 60, output_path: "output.mp4")
IO.puts("ASMR video generated at: #{video_path}")
This example generates a 60-second ASMR video using default settings and saves it to "output.mp4".
**2. Customizing Audio and Visual Elements:**
elixir
alias AsmrVideoGenerator, as: AVG
options = %{
duration: 120,
output_path: "custom_video.mp4",
audio: %{
type: :nature,
subtype: :rainforest
},
visual: %{
type: :abstract,
colors: ["#ADD8E6", "#00008B"]
}
}
case AVG.generate(options) do
{:ok, video_path} ->
IO.puts("Custom ASMR video generated at: #{video_path}")
{:error, reason} ->
IO.puts("Error generating video: #{reason}")
end
This example demonstrates how to customize the audio and visual elements of the generated video. It uses pattern matching to handle both success and error scenarios.
**3. Creating a Sequence of ASMR Segments:**
elixir
alias AsmrVideoGenerator, as: AVG
segment_1 = %{duration: 30, audio: %{type: :tapping}, visual: %{type: :geometric}}
segment_2 = %{duration: 30, audio: %{type: :whispering}, visual: %{type: :particles}}
[segment_1, segment_2]
|> Enum.map(&AVG.generate(&1))
|> Enum.each(fn
{:ok, video_path} -> IO.puts("Segment generated at: #{video_path}")
{:error, reason} -> IO.puts("Error generating segment: #{reason}")
end)
This example generates two ASMR video segments and concatenates them. It uses `Enum.map` and `Enum.each` for concise and functional processing.
**4. Using Pipes for Option Configuration:**
elixir
alias AsmrVideoGenerator, as: AVG
options =
%{duration: 45, output_path: "piped_video.mp4"}
|> Map.put(:audio, %{type: :brushing})
|> Map.put(:visual, %{type: :gradient, direction: :vertical})
case AVG.generate(options) do
{:ok, video_path} ->
IO.puts("Piped ASMR video generated at: #{video_path}")
{:error, reason} ->
IO.puts("Error generating video: #{reason}")
end
This example uses the pipe operator (`|>`) to configure the options map in a readable and maintainable way.
**5. Handling Complex Error Scenarios:**
elixir
alias AsmrVideoGenerator, as: AVG
try do
AVG.generate(duration: 600, output_path: "") # Intentionally invalid output_path
rescue
e ->
IO.puts("Caught exception: #{e}")
else
{:ok, video_path} -> IO.puts("Video generated successfully at: #{video_path}")
{:error, reason} -> IO.puts("Error generating video: #{reason}")
end
This example uses `try/rescue/else` to handle potential exceptions and errors during video generation, demonstrating robust error handling.
## Features
* **Programmatic Video Generation:** Create ASMR videos directly from your Elixir code.
* **Customizable Audio:** Choose from a variety of audio types, including tapping, whispering, nature sounds, and more.
* **Customizable Visuals:** Select from different visual styles, colors, and animations.
* **Segment Generation:** Create and combine multiple ASMR segments into a single video.
* **Flexible Configuration:** Easily configure video settings using maps and pipes.
* **Error Handling:** Robust error handling to ensure reliable video generation.
## License
MIT
This package is part of the asmr-video-generator ecosystem. For advanced features and enterprise-grade tools, visit: https://supermaker.ai/video/asmr-video-generator/