最近在学习ffmpeg,我觉得av_dump_format()函数是它里面最简单的API了。因为它的功能就是打印多媒体文件相关信息,算是最贴近生活的ffmpeg函数。
在使用它之前我们还需要用到一个很重要的API,叫avformat_open_input()。为什么要用它呢?ffmpeg里面对多媒体文件的操作都要通过一个叫AVFormatContext的结构体,而open_input()函数内部会根据多媒体文件给相应的AVFormatContext赋值,之后我们便可以通过操作AVFormatContext来操作该多媒体文件,包括关闭、获取流信息等等。也就是说,open_input()起了一个将多媒体文件和AVFormatContext结构体绑定的作用。这种绑定类似于Linux内核通过文件描述符来访问文件。
一.参数解析
dump_format()函数需要四个参数,分别是通过open_input函数绑定的AVFormatContext指针,索引号,多媒体文件名和是否为输出。其中参数二索引号默认填-1,参数四标识我们要打印信息的文件是否为输出文件,是则填1,否则填0。
二.实际案例
我们的实例打印了“Titanic.mp4”的详细信息,共分为三个步骤:
1.打开多媒体文件
2.打印多媒体文件信息
3.关闭多媒体文件
以下贴上main函数代码。
int ret;
AVFormatContext *fmt_ctx=NULL;
//*1*
ret=avformat_open_input(&fmt_ctx,"Titanic.mp4",NULL,NULL);
if(ret<0)
{
printf("fail to open input.");
exit(1);
}
//*2*
av_dump_format(fmt_ctx,-1,"Titanic.mp4",0);
//*3*
avformat_close_input(&fmt_ctx);
return 0;
三.运行结果
我们可以看见程序打印出了“Titanic.mp4”的metadata元信息、duration时长、bitrate码率、stream流等信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。