使用ffmpeg 获取视频总时长

以前一直以为知道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()后使用

你可能感兴趣的:(ffmpeg)