sourcecode
main.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#include <libavutil/imgutils.h>
#include <SDL2/SDL.h>
#include <signal.h>
#include <stdbool.h>
// 全局标志变量,用于指示程序是否应该退出
volatile sig_atomic_t exit_program = false;
// 信号处理函数
void handle_sigint(int sig) {
if (sig == SIGINT) {
printf("Caught SIGINT, exiting...\n");
exit_program = true;
}
}
int main(int argc, char* argv[]) {
if (argc < 2) {
printf("Usage: %s <video_file>\n", argv[0]);
return -1;
}
const char *filename = argv[1];
// 注册信号处理函数
signal(SIGINT, handle_sigint);
avformat_network_init();
// Open video file
AVFormatContext *pFormatCtx = avformat_alloc_context();
if (avformat_open_input(&pFormatCtx, filena