#include
int main(int argc, char *argv[])
{
int err_code;
char errors[1024];
AVFormatContext *fmt_ctx = NULL;
if(argc < 2){
fprintf(stderr, "[Usage]you should input media file!\n");
return -1;
}
char *src_filename = argv[1];
av_register_all();
/* open input file, and allocate format context */
if ((err_code=avformat_open_input(&fmt_ctx, src_filename, NULL, NULL)) < 0) {
av_strerror(err_code, errors, 1024);
fprintf(stderr, "Could not open source file %s, %d(%s)\n", src_filename, err_code, errors);
exit(1);
}
/* retreive stream information */
if((err_code = avformat_find_stream_info(fmt_ctx, NULL)) < 0) {
av_strerror(err_code, errors, 1024);
fprintf(stderr, "Could not open source file %s, %d(%s)\n", src_filename, err_code, errors);
exit(1);
}
/* dump input information to stderr */
av_dump_format(fmt_ctx, 0, src_filename, 0);
/* close input file */
avformat_close_input(&fmt_ctx);
return 0;
}
avformat_find_stream_info其实还是很有作用的,没有他是获取不到时长的,对于flv封装格式的好像也无法dump出信息。这儿以后可以研究一下。
Input #0, flv, from 'testfile.flv':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.42.100
Duration: 00:01:44.30, start: 0.000000, bitrate: 559 kb/s
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1472x826 [SAR 1:1 DAR 736:413], 374 kb/s, 24.35 fps
, 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 176 kb/s