1、什么是ffmpeg
image.png
ffmpeg参考文档
http://www.imooc.com/t/4873493(推荐)
ffmpeg 命令分类
image.png
FFmpeg处理音视频流程
image.png多媒体文件的基本概念
1、多媒体文件其实是个容器
2、在容器中有很多流
3、每种流是由不同的编码器的。
4、从流中读出的数据称为包
5、在一个包中包含一个或多个帧
几种重要的结构体
1、AVFormatContext
2、AVStream
3、AVPacket
Ffmpeg操作流数据的基本操作
image.png
打印音视频信息
1、av_register_all():将ffmpeg中的编解码、注册
2、avformat_open_input()/avformat_close_input
3、av_dump_format()
抽取音频数据
1、av_init_packet():初始化一个数据包结构体。
2、av_find_best_stream()
3、av_read_frame()/av_packet_unref()
中级开发内容
1、H264解码
2、H264编码
3、AAC解码
4、AAC编码
1、添加头文件
libavcodec/avcodec.h(编解码 库)
2、常用的数据结构体
AVCodec编码器结构体
AVCodecContext编辑器上下文
AVFrame解码后的帧
3、结构体内存的分配与释放
av_frame_alloc/av_frame_free()
avcodec_alloc_context()
avcodec_free_context()
4、解码步骤
1、查找解码器:avcodec_find_decoder
2、创造上下文
3、打开解码器:avcodec_open2
4 、解码:avcodec_decode_video2
5、H264编码流程
1、查找解码器:avcodec_find_encoder_by_name
2、创造上下文
3、设置编码参数,并打开编码器:avcodec_open2
4、编码:avcodec_encode_video2
6、Ffmpng aac编码
1、编码的流程与视频相同
2、编码函数avcodec_encodec_audio2
Android 平台下引入ffmpeg
1、编译android下的ffmpeg的库文件
2、在android中引入编译好的动态库
3、编写CMakeLists.txt
1、android 自带的库
image.png
2、编写自己的动态库文件
image.png
3、引入ffmpeg动态库
imported表示引入的库
image.png
4、引入动态库的头文件
引入动态库的头文件
5、链接所有的库生快native-lib库
image.png
网友评论