2.2 查看流信息


说明

本示例演示如何使用 FFmpeg 获取音视频文件的流信息。

示例代码

#include<stdio.h>
extern "C" {
	#include <libavformat/avformat.h>
	#include <libavutil/avutil.h>
}


int main(int argc, const char* argv[]) {

	const char *filename = "F:\\ffmpeg-learn\\test.mp4";
    if (argc > 1) {
        filename = argv[1];
    }
    AVFormatContext *fmt_ctx = NULL;
    // 打开音视频文件
    int ret = avformat_open_input(&fmt_ctx, filename, NULL, NULL);
    if (ret < 0) {
        av_log(NULL, AV_LOG_ERROR, "Can't open file %s.\n", filename);
        return -1;
    }
    av_log(NULL, AV_LOG_INFO, "Success open input_file %s.\n", filename);
    // 查找音视频文件中的流信息
    ret = avformat_find_stream_info(fmt_ctx, NULL);
    if (ret < 0) {
        av_log(NULL, AV_LOG_ERROR, "Can't find stream information.\n");
        return -1;
    }
    av_log(NULL, AV_LOG_INFO, "Success find stream information.\n");
    const AVInputFormat* iformat = fmt_ctx->iformat;
    av_log(NULL, AV_LOG_INFO, "format name is %s.\n", iformat->name);
    av_log(NULL, AV_LOG_INFO, "format long_name is %s\n", iformat->long_name);

    av_dump_format(fmt_ctx,0,filename,0);
    // 关闭音视频文件
    avformat_close_input(&fmt_ctx);
    return 0; 
}