Mercurial
diff third_party/ffmpeg/README.md @ 217:7ef4c9d2a72d hg-web
[DO NOT PUSH] Random values.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 25 Jan 2026 10:44:04 -0800 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/third_party/ffmpeg/README.md Sun Jan 25 10:44:04 2026 -0800 @@ -0,0 +1,75 @@ +# ffmpeg + +FFmpeg wrapper for Bazel projects. + +## Prerequisites + +FFmpeg must be installed on the system: + +```bash +# Ubuntu/Debian +sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev + +# macOS +brew install ffmpeg + +# Arch Linux +sudo pacman -S ffmpeg +``` + +## Libraries + +### ffmpeg_cli + +Shells out to the `ffmpeg` and `ffprobe` command-line tools. This is the recommended approach for most projects as it's simpler and doesn't require linking against FFmpeg libraries. + +```starlark +deps = ["//third_party/ffmpeg:ffmpeg_cli"] +``` + +```c +#include "third_party/ffmpeg/ffmpeg_cli.h" + +// Convert image to WebP +ImageConvertOpts opts = ffmpeg_image_opts_default(); +opts.quality = 85; +ffmpeg_image_to_webp("input.jpg", "output.webp", &opts); + +// Convert video to HLS +HlsConvertOpts hls_opts = ffmpeg_hls_opts_default(); +ffmpeg_video_to_hls("input.mp4", "./output", "video", &hls_opts); +``` + +### ffmpeg (library) + +Links against FFmpeg libraries directly. Use this when you need low-level access to FFmpeg's encoding/decoding APIs. + +```starlark +deps = ["//third_party/ffmpeg:ffmpeg"] +``` + +## API + +### Image Conversion + +```c +FfmpegResult ffmpeg_image_to_webp(const char* input, const char* output, ImageConvertOpts* opts); +``` + +### Video to HLS + +```c +FfmpegResult ffmpeg_video_to_hls(const char* input, const char* output_dir, const char* name, HlsConvertOpts* opts); +``` + +### Video Thumbnail + +```c +FfmpegResult ffmpeg_video_thumbnail(const char* input, const char* output, int timestamp_seconds); +``` + +### Duration + +```c +FfmpegResult ffmpeg_get_duration(const char* input, double* duration_out); +```