Logo

0x5a.live

for different kinds of informations and explorations.

GitHub - talklittle/ffmpex: Elixir wrapper for FFmpeg command line interface

Elixir wrapper for FFmpeg command line interface. Contribute to talklittle/ffmpex development by creating an account on GitHub.

Visit SiteGitHub - talklittle/ffmpex: Elixir wrapper for FFmpeg command line interface

GitHub - talklittle/ffmpex: Elixir wrapper for FFmpeg command line interface

Elixir wrapper for FFmpeg command line interface. Contribute to talklittle/ffmpex development by creating an account on GitHub.

Powered by 0x5a.live ๐Ÿ’—

FFmpex

Build Status Module Version

An Elixir wrapper for the FFmpeg command line interface.

Documentation: https://hexdocs.pm/ffmpex/

Usage notes

The API is a builder, building up the list of options per-file, per-stream(-per-file), and globally.

Note that adding options is backwards from using the ffmpeg CLI; when using ffmpeg CLI, you specify the options before each file. But with FFmpex (this library), you add the file/stream first, then add the relevant options afterward.

Examples

import FFmpex
use FFmpex.Options

command =
  FFmpex.new_command
  |> add_global_option(option_y())
  |> add_input_file("/path/to/input.avi")
  |> add_output_file("/path/to/output.avi")
    |> add_stream_specifier(stream_type: :video)
      |> add_stream_option(option_b("64k"))
    |> add_file_option(option_maxrate("128k"))
    |> add_file_option(option_bufsize("64k"))

{:ok, output} = execute(command)

It is possible to obtain ffmpeg's output with:

command =
  FFmpex.new_command
  |> add_input_file("/path/to/input.mp4")
  |> to_stdout()
  |> add_file_option(option_f("avi"))

{:ok, output} = execute(command)

do_something(output)

You can use the FFprobe module to query for file info:

FFprobe.duration("/path/to/input.avi")
# => result in seconds, e.g., 228.456939

See silent_video and thumbnex for more usage examples.

Prerequisites

FFmpeg must be installed.

Installation

Add ffmpex to your list of dependencies in mix.exs:

def deps do
  [
    {:ffmpex, "~> 0.11.0"}
  ]
end

Configuration

You can specify some options in config.exs:

config :ffmpex, ffmpeg_path: "/path/to/ffmpeg"
config :ffmpex, ffprobe_path: "/path/to/ffprobe"

Release notes

See the Changelog for changes between versions.

Disclaimer

FFmpex is not affiliated with nor endorsed by the FFmpeg project.

FFmpeg is a trademark of Fabrice Bellard, originator of the FFmpeg project.

Copyright and License

Copyright (c) 2016 Andrew Shu

FFmpex source code is licensed under the MIT License.

Elixir Resources

are all listed below.

Resources

listed to get explored on!!

Made with โค๏ธ

to provide different kinds of informations and resources.