ffmpeg 打印音视频的 meta 信息
用到四个函数 :
av_register_all();
avformat_open_input
av_dump_format
avformat_close_input
直接上代码
av_register_all();
AVFormatContext *fmt_ctx = NULL;
int ret;
// 1. 上下文 2.文件名 3.文件的格式,如输入的格式,和后缀名格式不同 4.一些参数
ret = avformat_open_input(&fmt_ctx, "./a.mp4", NULL, NULL);
if (ret < 0 ) {
av_log(NULL, AV_LOG_ERROR, "cant open file1 : %s",av_err2str(ret));
return -1;
}
// 打印 meta 信息
// 1.上下文 2.流的索引值 3. 文件名 4.输入流还是输出流 ,输入填0 输出填1
av_dump_format(fmt_ctx, 0, "./a.mp4", 0);
avformat_close_input(&fmt_ctx);
return 0;
编译运行
将上面的代码复制到 main.c 里面,然后终端编译, gcc -g -o app main.c pkg-config --libs libavformat libavutil
, 然后 ./app ,就可以看到打印的信息了。
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
creation_time : 2018-09-29T08:07:09.000000Z
Duration: 00:00:11.43, bitrate: N/A
Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, 2 channels, 96 kb/s (default)
Metadata:
creation_time : 2018-09-29T08:07:09.000000Z
Stream #0:1(und): Video: h264 (avc1 / 0x31637661), none, 960x544, 1131 kb/s, 30.06 fps, 30 tbr, 90k tbn (default)
Metadata:
creation_time : 2018-09-29T08:07:09.000000Z
encoder : JVT/AVC Coding
从打印信息可以看到,流的索引值是 0 ,视频的 时长 Duration: 00:00:11.43
, 比特率为 N/A 未知,编码类型为 Video: h264 (avc1 / 0x31637661),分辨率为 960x544 , 帧率为 30.06 fps,码率为 1131 kb/s
Audio: aac (mp4a / 0x6134706D),采样率 48000 Hz ,双声道,码率为 96 kb/s (default)