以前一直以为知道pFormatContext后,通过其成员变量duration就是视频长度。但是通过实验,其数值都是很大的负数,一看就不对,最近看av_dump_format(),看到此函数输出了视频的时长,然后看了下源码,找到了获取视频的时长的方法
直接贴出 :
if(pFormatCtx->duration!=AV_NOPTS_VALUE){
int hours,mins,secs,us;
int64_t duration=pFormatCtx->duration+5000;
secs=duration/AV_TIME_BASE;
us=dyration%AV_TIME_BASE;//1000000
mins=secs/60;
secs%=60;
hours=mins/60;
mins%=60;
printf("%02d:%02d:%02d.%02d\n",hours,mins,secs,(100*us)/AV_TIME_BASE);
}
这个方法调用要在执行完avformat_find_stream_info()后使用