获取FFmpeg音视频meta信息涉及以下三个函数:
avformat_open_input()
打开多媒体文件,将多媒体文件中各种流信息输出到结构体AVFormatContext中
avformat_close_input()
释放相关资源
av_dump_format()
将多媒体文件中的meta信息打印出来
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main()
{
int flag;
// 定义一个上下文的指针
AVFormatContext *fmt_ctx = NULL;
av_log_set_level(AV_LOG_INFO);
// 打开多媒体文件,将多媒体文件中各种流信息输出到结构体AVFormatContext中
// 第二个参数是视频地址,是输入文件的格式,设置为NULL就会根据文件后缀名来解析文件,第四个参数意义不大
flag = avformat_open_input(&fmt_ctx,"./testVideo/test.mp4",NULL,NULL);
if(flag < 0){
av_log(NULL,AV_LOG_ERROR,"打开失败:%s\n",av_err2str(flag));
return -1;
}
/*将多媒体文件中的信息打印出来
* 第二个参数是流的索引值,写0就可以
* 第三个参数是视频路径
* 第四个参数是输入流还是输出流,输入流是0,输出流是1,现在是输入文件所以是0
*/
av_dump_format(fmt_ctx,0,0,0);
// 释放资源
avformat_close_input(&fmt_ctx);
return 0;
}
获取的信息结果如下图所示。
Input中#0是流的索引值,也就是程序里面填的参数值。
Metadata是和ffmpeg版本相关的信息。
Duration是视频时长,bitrate是比特率,N/A表示未知。
Stream #0:0(eng): Video是视频流信息,编码器是h264,分辨率1368*768,码率58kb/s,6.63fps表示帧率,30 tbr, 30k tbn表示时间基。
Stream #0:1(eng): Audio是音频流信息,编码器是aac,采样率48kHz,双声道,比特率173kb/s。

网友评论