Product Promotion
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
Elixir wrapper for FFmpeg command line interface. Contribute to talklittle/ffmpex development by creating an account on GitHub.
Powered by 0x5a.live ๐
FFmpex
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.
Made with โค๏ธ
to provide different kinds of informations and resources.