1.新建一个qt项目
2.下载ffmpeg文件Releases · BtbN/FFmpeg-Builds · GitHub
3.解压后,打开qt项目地址,将ffmpeg文件复制进qt项目
4.打开新建的qt项目头文件新加入如下内容:(如有需求可按需求添加)
INCLUDEPATH +=$$PWD/include
LIBS += $$PWD/lib/avcodec.lib \
$$PWD/lib/avfilter.lib \
$$PWD/lib/avformat.lib \
$$PWD/lib/avutil.lib \
$$PWD/lib/postproc.lib \
$$PWD/lib/swresample.lib \
$$PWD/lib/swscale.lib
5.测试
将mainwindows.cpp文件替换为如下内容:(注意:调用ffmpeg头文件必须用extern "C",因为ffmpeg为纯c)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
extern "C"
{
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
avformat_network_init();
const char* filename = "input.mp4"; // Ensure this file exists or change to a valid path
AVFormatContext* formatContext = nullptr;
if (avformat_open_input(&formatContext, filename, nullptr, nullptr) != 0) {
qWarning() << "Could not open the file.";
} else {
// Print some information about the file
qDebug() << "Format:" << formatContext->iformat->name;
qDebug() << "Duration:" << formatContext->duration / AV_TIME_BASE << "seconds";
qDebug() << "Bit rate:" << formatContext->bit_rate;
// Clean up
avformat_close_input(&formatContext);
}
}
MainWindow::~MainWindow()
{
delete ui;
}