概述
在平时开发音视频时,我们需要知道一个多媒体文件音/视频的格式,以及音频的采样率、视频的帧数等等。通常我们会通过一些工具去获取,其实使用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);
}