Ffmpex
Elixir wrapper for FFmpeg command line interface
Install / Use
/learn @talklittle/FfmpexREADME
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.
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
