1. 快速打开媒体文件查看信息
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <QDebug>#undef main // 不加这句会直接报错
#include "SDL.h"extern "C"
{#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libswscale/swscale.h>#include <libavdevice/avdevice.h>#include <libavformat/version.h>#include <libavutil/time.h>#include <libavutil/mathematics.h>#include <libavutil/imgutils.h>
}int main(int argc, char *argv[])
{const char *input_file = "test.mp4";AVFormatContext *pFormatCtx = nullptr;int ret = avformat_open_input(&pFormatCtx, input_file, NULL, NULL);if(ret != 0){// av_log(nullptr, AV_LOG_ERROR, "Open Input File: %s failed: %s \n", input_file, av_err2str(ret));return -1;}av_dump_format(pFormatCtx, 0, input_file, 0);avformat_close_input(&pFormatCtx);qDebug() << "Finished! ";return 0;
}
- 重要结构体说明
(1)AVFormatContext :容器或者媒体文件的抽象层次。
(2)AVStream:音频、视频或者字幕流。
(3)AVCodecContext与AVCodec:编码格式和编码器的抽象。
(4)AVPackge:数据包的抽象(未解码的数据)。
(5)AVStream:数据帧的抽象。
- 上边用到了SDL,可以注释掉。