Mercurial
view 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 |
line wrap: on
line source
#ifndef FFMPEG_CLI_H #define FFMPEG_CLI_H #include <stdbool.h> // Result codes typedef enum { FFMPEG_OK = 0, FFMPEG_ERR_INPUT_NOT_FOUND = 1, FFMPEG_ERR_OUTPUT_FAILED = 2, FFMPEG_ERR_INVALID_ARGS = 3, FFMPEG_ERR_PROCESS_FAILED = 4, } FfmpegResult; // Image conversion options typedef struct { int quality; // 0-100, default 80 int max_width; // 0 = no resize int max_height; // 0 = no resize bool preserve_aspect; } ImageConvertOpts; // Video conversion options for HLS typedef struct { int segment_duration; // seconds, default 6 int video_bitrate; // kbps, 0 = auto int audio_bitrate; // kbps, 0 = 128 int max_width; // 0 = no resize int max_height; // 0 = no resize bool generate_thumbnail; } HlsConvertOpts; // Initialize default options ImageConvertOpts ffmpeg_image_opts_default(void); HlsConvertOpts ffmpeg_hls_opts_default(void); // Convert image to WebP format // output_path should end with .webp FfmpegResult ffmpeg_image_to_webp(const char* input_path, const char* output_path, ImageConvertOpts* opts); // Convert video to HLS format // output_dir is the directory where .m3u8 and .ts files will be created FfmpegResult ffmpeg_video_to_hls(const char* input_path, const char* output_dir, const char* name, HlsConvertOpts* opts); // Generate video thumbnail FfmpegResult ffmpeg_video_thumbnail(const char* input_path, const char* output_path, int timestamp_seconds); // Get media duration in seconds (works for both audio and video) FfmpegResult ffmpeg_get_duration(const char* input_path, double* duration_out); // Check if ffmpeg is available on the system bool ffmpeg_is_available(void); // Get last error message const char* ffmpeg_last_error(void); #endif // FFMPEG_CLI_H