View Source FFmpex (ffmpex v0.11.0)
Create and execute ffmpeg CLI commands.
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.
Example
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 = execute(command)
Summary
Functions
Add a per-file option to the command.
Add a global option that applies to the entire command.
Add an input file to the command.
Add an output file to the command.
Add a per-stream option to the command.
Add a stream specifier to the most recent file. The stream specifier is used as a target for per-stream options.
Execute the command using ffmpeg CLI.
Begin a new blank (no options) ffmpeg command.
Prepares the command to be executed, by converting the %Command{}
into
proper parameters to be feeded to System.cmd/3
or Port.open/2
.
Outputs to stdout, so it can be used directly from execute/1
's output
Functions
Add a per-file option to the command.
Applies to the most recently added file.
Add a global option that applies to the entire command.
Add an input file to the command.
Add an output file to the command.
Add a per-stream option to the command.
Applies to the most recently added stream specifier, of the most recently added file.
@spec add_stream_specifier(command :: FFmpex.Command.t(), opts :: Keyword.t()) :: FFmpex.Command.t()
Add a stream specifier to the most recent file. The stream specifier is used as a target for per-stream options.
Example
add_stream_specifier(command, stream_type: :video)
Options
:stream_index
- 0-based integer index for the stream:stream_type
- One of:video
,:video_without_pics
,:audio
,:subtitle
,:data
,:attachments
:program_id
- ID for the program:stream_id
- Stream id (e.g. PID in MPEG-TS container):metadata_key
- Match streams with the given metadata tag:metadata_value
- Match streams with the given metadata value. Must also specify:metadata_key
.:usable
- Matches streams with usable configuration, the codec must be defined and the essential information such as video dimension or audio sample rate must be present.
@spec execute(command :: FFmpex.Command.t()) :: {:ok, binary()} | {:error, {Collectable.t(), exit_status :: non_neg_integer()}}
Execute the command using ffmpeg CLI.
Returns {:ok, output}
on success, or {:error, {cmd_output, exit_status}}
on error.
Begin a new blank (no options) ffmpeg command.
Prepares the command to be executed, by converting the %Command{}
into
proper parameters to be feeded to System.cmd/3
or Port.open/2
.
Under normal circumstances FFmpex.execute/1
should be used, use prepare
only when converted args are needed to be feeded in a custom execution method.
Returns {ffmpeg_executable_path, list_of_args}
.
Outputs to stdout, so it can be used directly from execute/1
's output