README.md

# sotavideo.ai

An Elixir client for interacting with the sotavideo.ai platform, enabling seamless integration of AI-powered video processing into your Elixir applications. This package simplifies common video analysis tasks, providing a clean and efficient interface.

## Installation

Add `sotavideo_ai` to your list of dependencies in `mix.exs`:
elixir
def deps do
  [
    {:sotavideo_ai, "~> 0.1.0"} # Replace with the actual version
  ]
end

Then, run `mix deps.get` to fetch the dependency.

## Usage Examples

Before using any function, configure the API key:
elixir
config :sotavideo_ai, api_key: "YOUR_API_KEY"

Replace `YOUR_API_KEY` with your actual API key obtained from the sotavideo.ai platform.

**1. Analyzing Video Content (Simple Example):**
elixir
alias SotavideoAI

video_url = "https://example.com/video.mp4"

case SotavideoAI.analyze_video(video_url) do
  {:ok, analysis_result} ->
    IO.inspect(analysis_result, label: "Video Analysis Result")
  {:error, reason} ->
    IO.puts("Error analyzing video: #{reason}")
end

**2. Detecting Objects in a Video Frame:**
elixir
alias SotavideoAI

video_url = "https://example.com/video.mp4"
frame_number = 100

case SotavideoAI.detect_objects(video_url, frame_number) do
  {:ok, objects} ->
    Enum.each(objects, fn object ->
      IO.puts("Detected object: #{object.label} (Confidence: #{object.confidence})")
    end)
  {:error, reason} ->
    IO.puts("Error detecting objects: #{reason}")
end

**3. Transcribing Audio from a Video:**
elixir
alias SotavideoAI

video_url = "https://example.com/video.mp4"

case SotavideoAI.transcribe_audio(video_url) do
  {:ok, transcript} ->
    IO.puts("Video Transcript: #{transcript}")
  {:error, reason} ->
    IO.puts("Error transcribing audio: #{reason}")
end

**4. Using Pipes for Chained Operations (Hypothetical):**
elixir
alias SotavideoAI

video_url = "https://example.com/video.mp4"

video_url
|> SotavideoAI.analyze_video()
|> case do
  {:ok, analysis_result} ->
    # Further processing of analysis_result
    {:ok, analysis_result}
  {:error, reason} ->
    IO.puts("Error analyzing video: #{reason}")
    {:error, reason}
end
|> case do
    {:ok, analysis_result} ->
        #Example further processing
        IO.puts("Analysis Complete")
    {:error, reason} ->
        IO.puts("Final Error")
end

**5. Extracting Keyframes from Video:**
elixir
alias SotavideoAI

video_url = "https://example.com/video.mp4"

case SotavideoAI.extract_keyframes(video_url) do
  {:ok, keyframe_urls} ->
    Enum.each(keyframe_urls, fn url ->
      IO.puts("Keyframe URL: #{url}")
    end)
  {:error, reason} ->
    IO.puts("Error extracting keyframes: #{reason}")
end

## Feature Summary

*   **Video Analysis:** Gain insights into video content, including scene detection and object recognition.
*   **Object Detection:** Identify and locate specific objects within video frames.
*   **Audio Transcription:** Automatically transcribe audio tracks from video files.
*   **Keyframe Extraction:** Extract representative keyframes from videos for quick content overview.
*   **Simple Configuration:** Easy API key configuration for seamless integration.
*   **Error Handling:** Robust error handling to manage potential issues during API calls.

## License

MIT

This package is part of the sotavideo.ai ecosystem. For advanced features and enterprise-grade tools, visit: https://sotavideo.ai/