使用ffmpeg打印音视频的详细参数非常简单,仅仅需要三个函数接口实现:
/*所有进行操作前,先执行以下,否则需要自己制定类型*/
av_register_all
/*Open an input stream and read the header*/
avformat_open_input
/*
* Print detailed information about the input or output format
* */
av_dump_format(fmt_ctx, 0, "/work/test/test.mp4", 0);
avformat_close_input(&fmt_ctx);
//
// Created by andrew on 2020/11/1.
//
#include <iostream>
extern "C" {
#include <libavutil/log.h>
#include <libavformat/avformat.h>
}
int main(int argc, char *argv[]) {
AVFormatContext *fmt_ctx = NULL;
av_log_set_level(AV_LOG_INFO);
/*所有进行操作前,先执行以下,否则需要自己制定类型*/
av_register_all();
/*Open an input stream and read the header*/
int ret = avformat_open_input(&fmt_ctx, "/work/test/test.mp4", NULL, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "can't open file.\n");
return -1;
}
/*
* Print detailed information about the input or output format
* */
av_dump_format(fmt_ctx, 0, "/work/test/test.mp4", 0);
/*Close an opened input AVFormatContext*/
avformat_close_input(&fmt_ctx);
return 0;
}
执行效果如下:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/work/test/test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:00:26.47, bitrate: N/A
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), none, 1280x800, 455 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, 191 kb/s (default)
Metadata:
handler_name : SoundHandler
Side data:
audio service type: main
libgcov profiling error:/work/ffmpeg_doc/cmake-build-debug-coverage/src/CMakeFiles/ffmpeg_avformat.dir/ffmpeg_avformat/ffmpeg_avformat.cpp.gcda:overwriting an existing profile data with a different timestamp
Process finished with exit code 0