Mercurial
comparison third_party/ffmpeg/ffmpeg_cli.h @ 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 |
comparison
equal
deleted
inserted
replaced
| 192:b818a4561a3c | 217:7ef4c9d2a72d |
|---|---|
| 1 #ifndef FFMPEG_CLI_H | |
| 2 #define FFMPEG_CLI_H | |
| 3 | |
| 4 #include <stdbool.h> | |
| 5 | |
| 6 // Result codes | |
| 7 typedef enum { | |
| 8 FFMPEG_OK = 0, | |
| 9 FFMPEG_ERR_INPUT_NOT_FOUND = 1, | |
| 10 FFMPEG_ERR_OUTPUT_FAILED = 2, | |
| 11 FFMPEG_ERR_INVALID_ARGS = 3, | |
| 12 FFMPEG_ERR_PROCESS_FAILED = 4, | |
| 13 } FfmpegResult; | |
| 14 | |
| 15 // Image conversion options | |
| 16 typedef struct { | |
| 17 int quality; // 0-100, default 80 | |
| 18 int max_width; // 0 = no resize | |
| 19 int max_height; // 0 = no resize | |
| 20 bool preserve_aspect; | |
| 21 } ImageConvertOpts; | |
| 22 | |
| 23 // Video conversion options for HLS | |
| 24 typedef struct { | |
| 25 int segment_duration; // seconds, default 6 | |
| 26 int video_bitrate; // kbps, 0 = auto | |
| 27 int audio_bitrate; // kbps, 0 = 128 | |
| 28 int max_width; // 0 = no resize | |
| 29 int max_height; // 0 = no resize | |
| 30 bool generate_thumbnail; | |
| 31 } HlsConvertOpts; | |
| 32 | |
| 33 // Initialize default options | |
| 34 ImageConvertOpts ffmpeg_image_opts_default(void); | |
| 35 HlsConvertOpts ffmpeg_hls_opts_default(void); | |
| 36 | |
| 37 // Convert image to WebP format | |
| 38 // output_path should end with .webp | |
| 39 FfmpegResult ffmpeg_image_to_webp(const char* input_path, const char* output_path, ImageConvertOpts* opts); | |
| 40 | |
| 41 // Convert video to HLS format | |
| 42 // output_dir is the directory where .m3u8 and .ts files will be created | |
| 43 FfmpegResult ffmpeg_video_to_hls(const char* input_path, const char* output_dir, const char* name, HlsConvertOpts* opts); | |
| 44 | |
| 45 // Generate video thumbnail | |
| 46 FfmpegResult ffmpeg_video_thumbnail(const char* input_path, const char* output_path, int timestamp_seconds); | |
| 47 | |
| 48 // Get media duration in seconds (works for both audio and video) | |
| 49 FfmpegResult ffmpeg_get_duration(const char* input_path, double* duration_out); | |
| 50 | |
| 51 // Check if ffmpeg is available on the system | |
| 52 bool ffmpeg_is_available(void); | |
| 53 | |
| 54 // Get last error message | |
| 55 const char* ffmpeg_last_error(void); | |
| 56 | |
| 57 #endif // FFMPEG_CLI_H |