1、开源库 支持window,Andriod,Ios,linux等
2、音视频处理功能
①音视频源输入
②音视频流输出
③音视频流处理
3、基本模块
①AVCodec 音视频的编码和解码相关的方法 如H264的编码方式
②AVFormat 格式 比如视频流是TS流,实际上就是指ts封装格式。如果这个文件是mp4那么封装格式就是mp4的,但是Codec可能是H264的
③AVFilter 过滤器,源是1080p结果输出640*480p的,将大的视频转化为小的视频
④SwrResample 重采样 主要用于音频,视频不存在重采样,可以修改采样率 AVFilter也可以设置采样率他和SwrResample功能有重叠
⑤Swrscale 缩放,主要用于视频,比如将大的视频缩小,将小的视频放大
⑥其它模块 如devices设备模块 可以视频ffmpeg获取电脑的硬件信息和计算模块
4、基本流程 ffmpeg 官网流程
5、开发语言C
6、为什么用ffmpeg
最关键的好处是节省开发时间,比如手动获取rtsp视频流保存到本地,不使用ffmpeg库的时候应该做
①实现RTSP客户端,还需要实现RTCP控制音视频包,接收音视频包
②解视频包(RTSP--->H264)
③解音频包(RTP-->PCM(alaw))
④音频转码(PCM-->AAC)
⑤重新封装音视频包
如果使用ffmpeg库,这几个步骤直接使用ffmpeg提供的函数接口就可以了,如下
①avformat_open_input
②avformat_find_stream_info
③av_read_frame
④avformat_alloc_output_context2
⑤av_write_frame
整个过程ffmpeg直接就将RTSP流产生的数据存储到本地了。