CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.11.0 (2024-06-30)

* Added `pattern_type` option. See `FFmpex.Options.Formats.Image2` module. ([#37](https://github.com/talklittle/ffmpex/pull/37))
* Added Muxers/HLS options. See `FFmpex.Options.Muxers` module. ([#43](https://github.com/talklittle/ffmpex/pull/43))
* Requires Elixir 1.12.

## 0.10.0 (2022-01-14)

* Allow FFprobe on remote URLs, instead of treating URLs as nonexistent files.

## 0.9.0 (2021-11-16)

* Run commands with [Rambo](https://github.com/jayjun/rambo) instead of erlexec, to address issues running in Docker.
* Requires Elixir 1.9.

### 0.8.2 (2021-11-15)

* Fixed starting erlexec when running as root.

### 0.8.1 (2021-11-11)

* Fixed `SHELL` environment variable check for erlexec.

## 0.8.0 (2021-11-10)

* **Breaking change:** `execute/1` returns `{:ok, output}` instead of `:ok`.
* Added `to_stdout/1` to direct ffmpeg output to a buffer instead of a file. Retrieve buffer in `{:ok, output}` result of `execute/1`. ([#31](https://github.com/talklittle/ffmpex/pull/31))

### 0.7.3 (2020-07-09)

* Relaxed Jason dependency so it can get all 1.x versions without mix.exs update.

### 0.7.2 (2020-07-09)

* Bumped Jason dependency to 1.2.

### 0.7.1 (2019-11-26)

* Changed to `-loop` instead of deprecated `-loop_input` and `-loop_output` options in `FFmpex.Options.Advanced`.

## 0.7.0 (2019-09-05)

* **Breaking change:** FFprobe API changes to return `{:ok, term}` or `{:error, atom}` from `format_names/1`, `format/1`, `streams/1`.
* Changed `FFprobe.duration/1` to return `{:error, :no_such_file}` for nonexistent file, instead of raising MatchError.
* Fixed FFprobe module to raise a clearer error message when FFmpeg not installed in system path.

## 0.6.0 (2019-07-16)

* Changed to Jason instead of Poison for JSON operations.

### 0.5.2 (2018-04-10)

* Added options `video_size`, `framerate`, `draw_mouse` in `FFmpex.Options.Devices.Libavdevice`.

### 0.5.1 (2018-04-02)

* Added `FFmpex.prepare/1` to retrieve arguments list, useful for inspection or passing to `Port.open/2`.

## 0.5.0 (2018-03-26)

* **Breaking change:** Changed output format of `FFprobe.format/1` to be cleaner, based on ffmpeg JSON output.
  Specifically: `"nb_programs"`, `"nb_streams"`, and `"probe_score"` now contain integers instead of binaries;
  and tags are stored in a `"tags"` sub-map instead of being individual entries prefixed with "TAG:".
* Added `FFprobe.streams/1` to get a list of streams.
* Depends on Poison 3.1.
* Requires Elixir 1.4.

### 0.4.1 (2017-03-22)

* Fixed `FFprobe.format/1` for paths with spaces.

## 0.4.0 (2016-12-03)

* Added `FFmpex.Options.Video.Libavformat`.
* Validate options context (input, output, global) as specified in FFmpeg docs.

## 0.3.0 (2016-09-10)

* **Breaking change:** `add_stream_specifier/2` takes a keyword list instead of `%StreamSpecifier{}`.
* **Breaking change:** `execute/1` returns `:ok` or `{:error, {output, status}}`, instead of `{output, status}`.
* Added `use FFmpex.Options` to conveniently import all options.

### 0.2.1 (2016-08-17)

* Added `FFprobe.format/1` and `FFprobe.format_names/1`.

## 0.2.0 (2016-08-15)

* Added `FFprobe` module. `FFprobe.duration/1` to get video duration.

### 0.1.1 (2016-07-30)

* Lower Elixir requirement to 1.0 (was 1.3).

## 0.1.0 (2016-07-27)

* First FFmpex release.
* Specify per-file and per-stream options, and execute.
* Non-exhaustive catalog of known options.