
FFMpeg
文章平均质量分 87
取次花丛懒回顾
一个爱玩儿爱生活的技术宅;
毕业于上海大学通信与信息工程学院,从事流媒体和视频编解码的研究与开发工作;
研究领域包括视频编解码标准、视频处理和流媒体技术、移动互联网技术等。
展开
-
我的第一本书《FFmpeg音视频开发基础与实战》已正式出版
从19年上半年开始,经过两年多艰苦的写作和修订过程,我的第一本音视频开发领域的入门参考书籍 《FFmpeg音视频开发基础与实战》 终于问世了。本书基础知识和开发实践并重,以降低音视频领域的入门门槛、帮助初学者尽快入门为核心目的。书中较为系统地介绍了音视频领域的相关基础知识、FFmpeg相关工具的使用和相关SDK的使用方法。其中的代码大部分改编自FFMpeg代码库中提供的示例,逻辑简单,易于理解。本书目前已在京东、淘宝等电商平台上架,目前销量喜人。由于首印数量有限,请感兴趣的朋友抓紧下单,手慢无哦~推荐原创 2022-03-11 10:44:36 · 9697 阅读 · 18 评论 -
FFMPeg代码分析:AVCodec结构体以及编解码器的查找和加载
书接上回。在调用av_find_stream_info函数分析媒体文件并找到其中的视频流之后,视频流的相关信息被存放在了AVFormatContext结构体实例中。此时AVCodecContext实例所保存的AVCodec仍然为空。该结构体的定义如下:typedef struct AVCodec { const char *name;//codec名称,如果是解码HEVC的文原创 2013-11-25 16:42:50 · 2639 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】一、使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial1、基本介绍对于每一个从事音视频技术开发的工程师,想必没有一个人对FFmpeg这个名称感到陌生。FFmpeg是一套原创 2016-06-07 22:15:39 · 8975 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】二、调用FFmpeg SDK对YUV视频序列进行编码
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial视频由像素格式编码为码流格式是FFMpeg的一项基本功能。通常,视频编码器的输入视频通常为原始的图像像素值,输出格原创 2016-06-07 22:22:11 · 7030 阅读 · 7 评论 -
【FFMpeg视频开发与应用基础】三、调用FFmpeg SDK对H.264格式的视频压缩码流进行解码
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial经过了上篇调用FFMpeg SDK对视频进行编码的过程之后,我们可以比较容易地理解本篇的内容,即上一篇的逆过程——原创 2016-06-07 22:43:51 · 7168 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】四、调用FFmpeg SDK解析封装格式的视频为音频流和视频流
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial我们平常最常用的音视频文件通常不是单独的音频信号和视频信号,而是一个整体的文件。这个文件会在其中包含音频流和视频流原创 2016-06-07 22:54:47 · 8601 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】五、调用FFMpeg SDK封装音频和视频为视频文件
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial音频和视频的封装过程为解封装的逆过程,即将独立的音频数据和视频数据按照容器文件所规定的格式封装为一个完整的视频文件原创 2016-06-08 10:08:08 · 7132 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】六、调用FFMpeg SDK实现视频文件的转封装
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK工程代码地址:FFmpeg_Tutorial有时候我们可能会面对这样的一种需求,即我们不需要对视频内的音频或视频信号进行什么实际的操作,只是希望能把文件的封装原创 2016-06-08 10:12:52 · 6031 阅读 · 0 评论 -
【FFMpeg视频开发与应用基础】七、 调用FFMpeg SDK实现视频水印
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDKGithub工程代码地址:FFmpeg_Tutorial视频的水印通常指附加在原始视频上的可见或者不可见的,与原始视频无直接关联的标识。通常在有线电视画面上电原创 2016-06-10 21:25:06 · 6872 阅读 · 4 评论 -
【FFMpeg视频开发与应用基础】八、 调用FFMpeg SDK实现视频缩放
《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“优快云学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础——使用FFMpeg工具与SDKGithub工程代码地址:FFmpeg_Tutorial视频缩放是视频开发中一项最基本的功能。通过对视频的像素数据进行采样或插值,可以将低分辨率的视频转换到更原创 2016-06-10 21:32:43 · 7682 阅读 · 1 评论 -
使用Eclipse对FFMpeg进行调试
在研究代码的过程中,调试运行是一种原创 2014-08-23 22:46:31 · 1488 阅读 · 0 评论 -
FFMPEG在Windows平台编译的傻瓜教程
从一台空白的电脑开始,一步一步完成ffmpeg的编译操作原创 2014-01-19 23:44:42 · 6197 阅读 · 13 评论 -
FFMPeg代码分析:AVCodecContext结构体
在调用avformat_open_input打开文件后,下一步调用av_find_stream_info函数从文件中读取音视频流的信息,而后AVFormatContext的结构体将会将这些信息保存在其中。在找到AVFormatContext的视频stream后,获取其codec保存到指向AVCodecContext的指针:// Find the first video stream for原创 2013-11-25 14:26:17 · 3770 阅读 · 0 评论 -
ffmpeg源代码简单分析 :avcodec_decode_video2()
avcodec_decode_video2()的函数实现如下所示:int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,int *got_picture_ptr,const AVPacket *avpkt){ AVCodecInternal *avci = avctx原创 2013-11-18 16:31:28 · 2263 阅读 · 0 评论 -
ffmpeg2.1对HEVC/H.265视频进行解码的例子
新版的ffmpeg 2.1已经加入了对最新视频编解码标准H.265/HEVC的支持,因此可以解码该格式的视频了。这对视频产业来说将起到一种巨大的推动作用。本文所示的demo是一个简单的H.265格式视频的playback程序,是在http://blog.youkuaiyun.com/mu399/article/details/5814859这篇文章的基础上针对新版ffmpeg2.1做了部分修改。与参考文章一样原创 2013-11-18 17:51:41 · 10636 阅读 · 4 评论 -
FFMpeg分析:第一个函数avformat_open_input
在上篇文章中的demo中,main函数的流程里调用的第一个函数就是avformat_open_input()。直观看来,其最明显的功能就是制定了要播放的文件名了。但是除了问价名之外还有几个结构体作为了函数的参数。那么这个函数的功能是什么?又是怎么完成的?一起慢慢看吧。先贴代码:int avformat_open_input(AVFormatContext **ps, const char原创 2013-11-20 15:23:03 · 7767 阅读 · 0 评论 -
FFMPeg代码分析:AVFormatContext结构体
从先前的demo中可以看到,进入main函数所定义的第一个变量就是AVFormatContext的指针:int main(int argc, char *argv[]){ AVFormatContext *pFormatCtx = NULL; ....}而且,往下看就会知道这个结构体将贯穿函数始终,avformat_open_input、av_find_strea原创 2013-11-22 16:03:59 · 3772 阅读 · 0 评论 -
ffmpeg 源代码简单分析 : av_register_all()
原帖地址:http://blog.youkuaiyun.com/leixiaohua1020/article/details/12677129;写得非常好,故转之。前一阵子看了一下ffmpeg的源代码,并且做了一些注释,在此贴出来以作备忘。本文分析一下ffmpeg注册复用器,编码器等的函数av_register_all()。该函数在所有基于ffmpeg的应用程序中几乎都是第一个被调用的。只转载 2013-11-11 12:40:48 · 1871 阅读 · 0 评论 -
ffmpeg 源代码简单分析 : avcodec_register_all()
static AVCodec *first_avcodec = NULL/* encoder management */;原帖地址:http://blog.youkuaiyun.com/leixiaohua1020/article/details/12677265;avcodec_register_all()是av_register_all()函转载 2013-11-11 13:19:30 · 1749 阅读 · 0 评论 -
FFMPeg代码分析:av_read_frame()函数的内部构造
上文中贴出了av_read_frame()函数的实现,现在更细致地分析一下其内部的实现流程。av_read_frame()开始后,通常会调用read_frame_internal(s, pkt)函数:static int read_frame_internal(AVFormatContext *s, AVPacket *pkt){ int ret = 0, i, got_pa原创 2013-11-26 16:41:53 · 3746 阅读 · 3 评论 -
FFMPeg代码分析:avcodec_decode_video2函数
该函数的作用是实现压缩视频的解码。在avcodec.h中的声明方式如下:int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt);待解码的数据保存在avpkt->data中,大小为avpkt->size;解码完成后,picture原创 2013-11-26 18:00:10 · 6081 阅读 · 1 评论 -
FFMPeg代码分析:AVPacket结构体和av_read_frame函数
AVPacket结构用于保存压缩编码过的数据。在解码时,该结构的实例通常作为解复用器(demuxer)的输出并输入到解码器中;在编码时,通常是编码器的输出,并输入到复用器(muxer)中。该结构体的定义如下:typedef struct AVPacket { /** * A reference to the reference-counted buffer where the原创 2013-11-26 12:03:44 · 4332 阅读 · 0 评论 -
FFMPeg代码分析:AVFrame结构体及其相关的函数
AVFrame结构体保存的是解码后和原始的音视频信息。AVFrame通过函数av_frame_alloc()初始化,该函数仅仅分配AVFrame实例本身,而没有分配其内部的缓存。AVFrame实例由av_frame_free()释放;AVFrame实例通常分配一次,重复使用,如分配一个AVFrame实例来保留解码器中输出的视频帧(此时应使用av_frame_unref()清理参考帧并将AVFram原创 2013-11-27 10:41:41 · 4167 阅读 · 1 评论 -
ffmpeg 源代码简单分析 :av_read_frame()
原帖地址:http://blog.youkuaiyun.com/leixiaohua1020/article/details/12678577ffmpeg中的av_read_frame()的作用是读取码流中的音频若干帧或者视频一帧。例如,解码视频的时候,每解码一个视频帧,需要先调用 av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NA转载 2013-11-18 16:08:40 · 2368 阅读 · 0 评论