/membrane_ffmpeg_generator

FFmpeg video and audio generator for tests, benchmarks and demos.

Primary LanguageElixirApache License 2.0Apache-2.0

Membrane FFmpeg Generator

Hex.pm API Docs CircleCI

This repository contains FFmpeg video and audio generator for tests, benchmarks and demos.

It is part of Membrane Multimedia Framework.

Installation

The package can be installed by adding membrane_ffmpeg_generator to your list of dependencies in mix.exs:

def deps do
  [
    {:membrane_ffmpeg_generator, "~> 0.1.0"}
  ]
end

Usage

Simple generation of video without audio:

alias Membrane.FFmpegGenerator.VideoGenerator
alias Membrane.RawVideo

video_format = %RawVideo{
  width: 1920,
  height: 1080,
  framerate: {30, 1},
  pixel_format: :I420,
  aligned: true
}

duration = 10
file_format = :h264
{:ok, _output_path} = VideoGenerator.generate_video_without_audio(video_format, duration, file_format)

More advanced video generation with audio and custom options:

alias Membrane.FFmpegGenerator.VideoGenerator
alias Membrane.FFmpegGenerator.Types.Audio
alias Membrane.RawVideo

video_format = %RawVideo{
  width: 3830,
  height: 2160,
  framerate: {60, 1},
  pixel_format: :RGB,
  aligned: true
}

duration = 15
file_format = :mp4

audio_format = %Audio{
  frequency: 500,
  sample_rate: 48_000,
  beep_factor: 15
}

file_name = "awesome_video.mp4"

options = [
  audio_format: audio_format,
  output_path: file_name,
]

{:ok, _output_path} = VideoGenerator.generate_video_with_audio(video_format, duration, file_format, options)

Audio generation:

alias Membrane.FFmpegGenerator.AudioGenerator
alias Membrane.FFmpegGenerator.Types.Audio

audio_format = %Audio{
  frequency: 440,
  sample_rate: 44_100,
  beep_factor: 0
}

duration = 20
file_format = :mp3

file_name = "epic_audio.mp3"

options = [
  output_path: file_name,
]

{:ok, _output_path} = AudioGenerator.generate_audio(audio_format, duration, file_format, options)

Copyright and License

Copyright 2023, Software Mansion

Software Mansion

Licensed under the Apache License, Version 2.0