main.cpp
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>
#include <libavutil/imgutils.h>
#include <libswscale/swscale.h>
}
#include <iostream>
#include <string>
int resize_video(const std::string &input_filename, const std::string &output_filename, int width, int height) {
av_register_all();
AVFormatContext *input_format_context = nullptr;
if (avformat_open_input(&input_format_context, input_filename.c_str(), nullptr, nullptr) < 0) {
std::cerr << "Could not open input file." << std::endl;
return -1;
}
if (avformat_find_stream_info(input_format_context, nullptr) < 0) {
std::cerr << "Could not find stream information." << std::endl;
return -1;
}
AVCodec *decoder = nullptr;
int video_stream_index = av_find_best_stream(input_format_context, AVMEDIA_TYPE_VIDEO, -1, -1, &decoder, 0);
if (video_stream_index < 0) {
std::cerr << "Could not find video stream in the input file." << std::endl;
return -1;
}
AVCodecContext *decoder_context = avcodec_alloc_context3(decoder);
if (!decoder_context) {
std::cerr << "Could not allocate decoder context." << std::endl;
return -1;
}
if (avcodec_parameters_to_context(decoder_context, input_format_context->streams[video_stream_index]->codecpar) < 0) {
std::cerr << "Could not copy decoder parameters to decoder context." << std::endl;
return -1;
}
if (avcodec_open

最低0.47元/天 解锁文章
1979





