Implement automatic FFmpeg version detection

Based on ffmpeg-sys-next 4.3.2.
This commit is contained in:
Zhiming Wang
2020-08-02 11:44:13 +08:00
parent a5a897f42f
commit b28e852eb0
11 changed files with 239 additions and 235 deletions

View File

@ -3,22 +3,14 @@
This is a fork of the abandoned [ffmpeg](https://crates.io/crates/ffmpeg) crate by [meh.](https://github.com/meh/rust-ffmpeg).
Support for different FFmpeg versions are guarded by feature flags:
Currently supported FFmpeg versions: 3.4.x through 4.3.x.
| FFmpeg version | lavc version | corresponding feature |
| -------------- | ------------ | ---------------------------- |
| 4.3.x | 58.91.100 | `ffmpeg43` (current default) |
| 4.2.x | 58.54.100 | `ffmpeg42` |
| 4.1.x | 58.35.100 | `ffmpeg41` |
| 4.0.x | 58.18.100 | `ffmpeg4` |
| 3.4.x | 57.107.100 | none |
Build instructions can be found on the [wiki](https://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building).
See my [`metadata` project](https://github.com/zmwangx/metadata) for an example of targeting multiple versions of FFmpeg.
*Note on upgrading to v4.3.4 or later: v4.3.4 introduced automatic FFmpeg version detection, obseleting feature flags `ffmpeg4`, `ffmpeg41`, `ffmpeg42` and `ffmpeg43`. If you manually specify any of these features, now is the time to remove them; if you use `ffmpeg43` through the `default` feature, it's still on for backward-compatibility but it has turned into a no-op, and you don't need to do anything. Deprecation plan: `ffmpeg43` will be dropped from default features come 4.4, and all these features will be removed come 5.0.*
A word on versioning: major and minor versions of this crate track major and minor versions of FFmpeg, e.g. 4.2.x of this crate has been updated to support the 4.2.x series of FFmpeg. Patch level is reserved for bug fixes of this crate and does not track FFmpeg patch versions.
If you have problem building this crate, please have a look at the [wiki](https://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building).
**Please realize that this crate is in maintenance-only mode for the most part.** Which means I'll try my best to ensure the crate compiles against all release branches of FFmpeg 3.4 and later (only the latest patch release of each release branch is officially supported) and fix reported bugs, but if a new FFmpeg version brings new APIs that require significant effort to port to Rust, you might have to send me a PR (and just to be clear, I can't really guarantee I'll have the time to review). Any PR to improve existing API is unlikely to be merged, unfortunately.
🤝 **If you have significant, demonstrable experience in Rust and multimedia-related programming, please let me know, I'll be more than happy to invite you as a collaborator.** 🤝