ffmpeg学习日记17-获取MP4视频流的帧率

参考各位大佬的文章,终于磕磕绊绊的理解,写出了获取MP4视频流的帧率等信息的代码

win10系统下运行

代码如下:
getMp4FrameNum.pro

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qtSOURCES += \main.cppwin32 {
INCLUDEPATH += $$PWD/../include
LIBS += $$PWD/../lib/avcodec.lib \$$PWD/../lib/avdevice.lib \$$PWD/../lib/avfilter.lib \$$PWD/../lib/avformat.lib \$$PWD/../lib/avutil.lib \$$PWD/../lib/postproc.lib \$$PWD/../lib/swresample.lib \$$PWD/../lib/swscale.lib
}

main.cpp

#include <string>
#include <iostream>
#include <cinttypes>extern "C"
{
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include "libavcodec/avcodec.h"
#include "libavutil/opt.h"
#include "libavutil/imgutils.h"
#include "libavformat/avformat.h"
#include "libavutil/samplefmt.h"
#include "libavutil/timestamp.h"
}int main()
{std::cout << "hello world" << std::endl;int ret = 0;av_register_all();AVFormatContext *format_ctx = avformat_alloc_context();ret = avformat_open_input(&format_ctx,"jk.mp4",NULL,NULL);if (ret){std::cout << "open failed : " << ret << std::endl;return 0;}AVInputFormat *input_fmt = format_ctx->iformat;//获取视频的格式名字std::cout << "name:" << input_fmt->name << std::endl;std::cout << "long name:" << input_fmt->long_name << std::endl;AVStream **stream = (format_ctx->streams);//获取视频的时长std::cout << "shipin shichang :" << format_ctx->duration << "us == " <<format_ctx->duration / 1000000 << "s" << std::endl;int den = (*stream)->avg_frame_rate.den;int num = (*stream)->avg_frame_rate.num;std::cout << "shipin zhensulv den:" <<  den << std::endl;std::cout << "shipin zhensulv num:" <<  num << std::endl;//获取视频的帧率float rate = (float)num/(float)den;std::cout << "shipin zhensulv    :" <<  rate << std::endl;int msnum = (format_ctx->duration % 1000000) / 1000;std::cout << "shipin msnum  :" <<  msnum << std::endl;int yuzhen =  (int)(msnum * 1/rate);std::cout << "shipin yuzhensu  :" <<  yuzhen << std::endl;//获取视频的总帧数std::cout << "shipin zongzhensu  :" <<  (format_ctx->duration / 1000000) * (int)rate + yuzhen << std::endl;avformat_close_input(&format_ctx);return 0;
}

参考

  • ffmpeg代码笔记3:获取MP4视频流的帧率
  • FFmpeg获取视频帧率fps,tbr
  • FFmpeg中mp4的demuxer(mov.c)代码阅读
  • ffmpeg学习五:avformat_open_input函数源码分析(以mp4文件为例)
  • FFMPEG AVRational

ffmpeg学习日记17-获取MP4视频流的帧率相关推荐

  1. ffmpeg学习日记603-指令-获取视频分辨率

    ffmpeg学习日记603-指令-获取视频分辨率 ffmpeg:ffprobe获取视频分辨率,视频宽高,时长等元数据信息 ffprobe -select_streams v -show_entries ...

  2. ffmpeg学习日记605-指令-获取视频的总帧数

    ffmpeg学习日记605-指令-获取视频的总帧数 获取视频的总帧数 ffprobe.exe -v error -count_frames -select_streams v:0 -show_entr ...

  3. ffmpeg学习日记506-源码-av_image_copy()函数分析及功能

    ffmpeg学习日记506-源码-av_image_copy()函数分析及功能 实现文件 av_image_copy()实现在libavutil/imgutils.c中 函数原型 void av_im ...

  4. ffmpeg学习日记604-指令-将视频格式转为H264格式

    ffmpeg学习日记604-指令-将视频格式转为H264格式 在第四篇中,想要解码视频,缺没有弄清楚怎样的一个数据流,现在又明晰了一点,所谓的h264编解码,并不是直接将视频格式,通过h264编解码为 ...

  5. ffmpeg学习日记612-指令-转换视频格式

    ffmpeg学习日记612-指令-转换视频格式 mkv转mp4 ffmpeg -i LostInTranslation.mkv -codec copy LostInTranslation.mp4 Li ...

  6. ffmpeg学习日记602-指令-转换视频的分辨率

    ffmpeg学习日记602-指令-转换视频的分辨率 指令如下 ffmpeg -i video_1920.mp4 -vf scale=640:360 video_640.mp4 -hide_banner

  7. ffmpeg学习日记701-报错-co located POCs unavailable

    ffmpeg学习日记701-报错-co located POCs unavailable h264 co located POCs unavailable 出现该报错,是由于直接解析的帧是非关键帧,没 ...

  8. FFmpeg学习日记2

    1.将多张图像合成视频 解析: ffmpeg -f image2 -r 5 -i G:/image/image%02d.png -vcodec mpeg4 G:/image.mp4 2.设置Adobe ...

  9. QT学习日记17——Qt数据库

    学习视频链接 2021新版QT图形框架编程开发(层层到肉)_C++图形用户界面开发框架_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wf4y1Y7uh ...

最新文章

  1. 产品运行所需的信息检索失败_禁煤后用什么替代锅炉?看看三种热源运行费用对比就知道了...
  2. angularjs 表单校验
  3. Ubuntu 创建文件夹时出现:用户名 不在 sudoers 文件中。此事将被报告。
  4. 硬件基础知识---(3)电阻2
  5. 常用 html 标签
  6. Maven经验分享(一)安装部署
  7. linux终端怎么设置monaco,ubuntu16.04安装monaco字体
  8. c语言运算优先级口诀简单,C语言运算符优先级和口诀
  9. php阿里支付回调逻辑,php 银联支付回调
  10. 脑肠轴必读综述 | 肠道菌群是如何影响人的情绪疾病呢?(一)
  11. lineNumber: 1; columnNumber: 15; XML 声明中 version 后面跟随的值必须是用引号括起来的字符串。
  12. Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
  13. MongoDB Project(投影字段)
  14. Hadoop分布式集群安装
  15. (转)MBA案例:Taxi
  16. Zfile-轻量开源个人网盘【超简单部署】
  17. 桂微盘 开启6元微交易投资新时代
  18. Excel怎么自定义表格样式,设置每两行替换颜色
  19. 基于安卓平台的软件加固方案的设计与实现_银河麒麟操作系统 V10 发布:可兼容安卓生态...
  20. 订书机在工作中是否重要

热门文章

  1. 操作系统1—4章(最全复习题)
  2. 用户登录业务逻辑(单点登录,权限登录,普通登录)
  3. python opencv白平衡算法
  4. 计算机2级软件打不开,小编教你二级网页打不开怎么解决
  5. STL教程(十): 关联容器--unordered_map/unordered_multimap
  6. 面试题 之 数据库部分 八
  7. ORA_ERROR大全
  8. python求一元二次方程的解法_python进行二次方程式计算的实例讲解
  9. CAM350导入文件时钻孔文件错误
  10. html简单留言板教程,JS实现简易留言板(节点操作)