通读完只能对书中内容有大概的了解,具体的细节还得一一实践攻克。
媒体流,文件等封装,解封装,转封装
视频截取,AVFormatContext,AVPacket等介绍
视频,音频的编码,解码对应的新接口和旧接口。
硬件加速编码和解码。(涉及硬件相关结构体,接口,显存和cpu之间数据的交互)
AVFrame的介绍,以及相关接口demo的使用。
关注avframe使用时的内存情况。
内存操作相关接口。 av_malloc av_free AVBuffer AVBufferRef
avbuffer在调用编解码,滤镜处理时使用。
AVbufferPool
FilterGraph
音频,视频相关内置滤镜。(transtorm filter, source filter, sink filter)
libavfilter 相关api的使用。
AVFilterGraph(滤镜图,整个滤波过程中的结构体), AVFilterLink, AVFilterInout,AVFilter,AVFilterContext,AVFilterPad,
AVFilterCommand,buffersrc, buffersink
demo:使用滤镜给视频加logo (AVFilterContext)
libavutil 字符串,随机数,数据结构,数学函数,密码,多媒体等。
libswscale 图像转换,缩放。
libswresample 音频重采样,格式转换。
demo代码在github中。
注册事件,处理事件的方式。
FFmpegPlayerCtx
sdp技术,协商
chromium中使用ffmpeg,webrtc使用ffmpeg对h264进行解码,openh264解码。 了解webrtc源码,chromium源码
FreeSwitch基于webrtc进行通信
一般用的CBR(动态码率) 满足一对一视频通话或者简单视频会议场景。
VBR(动态码率)能节省带宽,不好控制最大带宽。
===》demo源码解析
freeswitch中vp8,vp9编码没有使用ffmpeg,直接使用libvpx
baresip依赖几个跨平台库: libre,librem,openssl,ffmpeg
学习BareSip上的demo(源码分析)
在ffmpeg中新建分支,新增一个模块进行自定义的编码解码。
AVFilter模块添加
支持多线程图像处理