FFmpeg教程
夏曹俊
捷帝科技创始人,华为认证HDE全球开发专家,华为HarmonyOS开发者创新大赛导师,南京大学全日制双硕士,近二十年c++跨平台研发经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审计项目,虚拟化安全迁移,中国排联比赛鹰眼系统和高速云摄像机,精确室内定位软硬件。。
展开
-
在C++项目中引入Lua(AlphaGo使用的方案)
最近大火的AlphaGo,其中的deepmind已经开源,可以到github中下载https://github.com/deepmind/lab·,网上还有一个基于Python开源AlphaGo,那个不是google的。通过看deepmind源码,我们可以知AlphaGo使用的是C++和Lua方案。当然语言不是AlphaGo的重点,但还是说明了c++和Lua方案能够完成大型的项目。从2009年原创 2017-02-09 13:02:48 · 2383 阅读 · 0 评论 -
CSDN学院中的Android影音(流媒体)播放器开发实战基于NDK、C++和FFmpeg 课程已经上线
CSDN学院中的 FFmpeg安卓流媒体播放器开发实战视频课程已经上线课程开发工具: AndroidStudio3 Android影音(流媒体)播放器开发实战基于NDK、C++和FFmpeg 对学员要求: 本课程是具有很强实战性的应用编程,课程中会从原理讲解到代码实现,但由于项目有一定复杂度,希望学习本课程的同学要掌握c++的基本语法,课程中也用到java的代码但比较少,如果是c...原创 2018-03-23 08:52:29 · 1452 阅读 · 3 评论 -
C++编程音视频库ffmpeg的pts时间换算方法
ffmpeg中的pts,dts,duration时间记录都是基于timebase换算,我们主要分析下pts的时间怎么换算,其它的是一样的换算。ffmpeg的时间换算对许多新接触同学算是一个大坑,很多刚接触ffmpeg的同学都不容易搞清楚它的时间计算方法。我们先看下ffmpeg时间是怎么算的:一帧图像(音频)的时间戳(时间戳一般以第一帧为0开始)= pts * (AVRational.num原创 2017-08-23 16:23:05 · 4822 阅读 · 0 评论 -
ffmpeg3.3新版本AVStream的封装流参数由codec替换codecpar(解码)
ffmpeg新版本中(封装流)AVStream的codec参数要被codecpar参数所替代,这样替代我们要注意什么,为什么要替代,我们先来看下ffmpeg的代码。代码分析和新参数优势typedef struct AVStream {#if FF_API_LAVF_AVCTX/*** @deprecated use the codecpar struct ins原创 2017-08-24 10:19:52 · 7280 阅读 · 0 评论 -
FFMPEG系列课程-读取视频帧
再来介绍下如何读取视频帧,打开视频参考前面的文章,首先需要创建一个帧的存放对象AVPacket pkt;memset(&pkt, 0, sizeof(AVPacket)); 再通过 int err = av_read_frame(ic, &pkt); 读取帧数据,其中ic是之前打开的视频流句柄。读取视频帧后要注意一点av_read_frame会自动给视频帧分配空间,返回值0表示成功。原创 2016-12-30 14:02:59 · 2881 阅读 · 0 评论 -
FFmpeg3最新的解码接口avcodec_send_packet和avcodec_receive_frame分析
ffmpeg3版本的解码接口做了不少调整,之前的视频解码接口avcodec_decode_video2和avcodec_decode_audio4音频解码被设置为deprecated,对这两个接口做了合并,使用统一的接口。并且将音视频解码步骤分为了两步,第一步avcodec_send_packet,第二步avcodec_receive_frame,通过接口名字我们就可以知道第一步是...原创 2017-06-06 10:58:02 · 15053 阅读 · 10 评论 -
ffmpeg的ubuntu的编译过程(编译静态库和动态库)
第一步源码下载通过git下载git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg或者直接下载wget http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2如果是下载的ffmpeg-3.3.tar.bz2 需要进行解压tar -jxvf ffmpeg-3.3.tar.bz2 如果国原创 2017-05-09 01:02:18 · 4047 阅读 · 1 评论 -
C/C++音视频库ffmpeg的数据包AVPacket分析
C/C++音视频库ffmpeg的数据包AVPacket分析AVPacket是ffmpeg用来存放编码后的视频帧数据,我们来分析一下这个结构体,int64_t pts;本帧数据显示的时间,比较关键的数据,在做seek和播放进度的时候都要用到它,pts只是一个数量,对应于AVStream->time_base,要根据time_base才能转换为具体的时间,音频和视频一般有不同的time_base,所以在做音视频同步一定要做转换,不能直接拿pts做。原创 2017-03-15 07:34:00 · 1778 阅读 · 1 评论 -
FFMPEG系列课程(一)打开视频解码器
从今天开始准备些FFmpeg的系列教程,今天是第一课我们研究下打开视频文件和视频解码器。演示环境在windows上,在linux上代码也是一样。 windows上可以不编译ffmpeg源码,后面我会分别讲解在linux和在windows上如何编译ffmpeg,直接在FFmpeg官网下载已经编译好的dll和lib文件,下载地址https://ffmpeg.zeranoe.com/builds/ 里面有32位和64位的,我下载的32位。原创 2016-12-27 07:09:58 · 3475 阅读 · 3 评论