[FFmpeg实战] - 打印音/视频信息

179 阅读1分钟

概述

在平时开发音视频时,我们需要知道一个多媒体文件音/视频的格式,以及音频的采样率、视频的帧数等等。通常我们会通过一些工具去获取,其实使用FFmpeg去获取这些信息是非常方便的,下面我们将介绍一下怎么使用FFmpeg去获取音/视频信息。

用到的FFmpeg方法

/*

注册FFmpeg中的各种编解码库、多媒体协议等

*/

av_register_all()  

/*打开和关闭多媒体文件

avformat_open_input():打开一个多媒体文件,它会根据我们的后缀名去识别我们的多媒体文件格式,当识别之后会返回一个AVFormatContext结构体。

avformat_close_input() :关闭和释放AVFormatContext  

*/

avformat_open_input()/avformat_close_input()    

/*

将多媒体文件信息打印出来

*/ 

av_dump_format()

代码

- (void)handleGetMediaInfoMation {
    
    int ret;
    
    // 上下文结构体
    AVFormatContext *fmt_ctx = NULL;
    
    // 设置log级别
    av_log_set_level(AV_LOG_INFO);
    
    // 注册各种编解码器、多媒体协议
    av_register_all();
    
    // 打开一个多媒体文件(mediaPath为多媒体文件路径)
    ret = avformat_open_input(&fmt_ctx, mediaPath, NULL, NULL);
    
    // 如果打开失败了打印日志
    if (ret < 0) {
        av_log(NULL, AV_LOG_ERROR, "can not open file: %s\n",av_err2str(ret));
    }
    
    // 打印多媒体详细信息
    av_dump_format(fmt_ctx, 0, mediaPath, 0);
    
    // 关闭多媒体文件
    avformat_close_input(&fmt_ctx);
    
}

运行结果