03FFmpeg-人生若只如初见

文章目录

  • 03FFmpeg-人生若只如初见
    • FFmpeg的三大特点
    • FFmpeg的工具
    • FFmpeg文件目录分析
    • FFmpeg的分块意识:
    • FFmpeg整个流程
    • 为什么要用FFmpeg===开发快

03FFmpeg-人生若只如初见

FFmpeg的三大特点

三大特点
1、开源库–支持windows,android,ios等(注:只是一个库,算法库)
2、音视频处理功能
3、开发语言–C语言

FFmpeg的工具

FFmpeg Tools
ffmpeg
处理音视频,推流,从流中抓取图片等
ffserver
利用FFmpeg的库建立了一个单线程的类似tcp的server端
ffplay
类似一个播放器,兼容性很好,显示基于SDL来实现
ffprobe
分析流

FFmpeg文件目录分析

1、avcodec:编解码(最重要的库)。
2、avformat:封装格式处理。
3、avfilter :滤镜特效处理。 ---- fifo —>音视频流的叠加,重采样等等 1080p --filter—>转640x480
4、avdevice:各种设备的输入输出。
5、avutil : 工具库(大部分库都需要这个库的支持)。
6、postproc:后期处理。
7、swresample:音频采样数据格式转换 —各种转化
8、swscale:视频像素数据格式转换(scale 视频缩放)。
参考学习链接
https://blog.csdn.net/guyuealian/article/details/79493019
https://blog.csdn.net/leixiaohua1020/article/details/50618190
https://blog.csdn.net/superfang119/article/details/8524881

FFmpeg的分块意识:

​ 1、音视频源的接入
​ 2、音视频流的输出
​ 3、音视频流的处理 == 解封装—编码数据打包—解码器–解码帧率—编码器—编码数据包—封装—输出文件

FFmpeg整个流程

03FFmpeg-人生若只如初见_第1张图片)]

03FFmpeg-人生若只如初见_第2张图片)]

输入文件—解封装(解复用)—编码数据打包—解码–解码帧率—编码—编码数据包—封装(复用)—输出文件

​ pkt压缩的数据包 裸流frame pkt压缩的数据包

为什么要用FFmpeg===开发快

​ 节省开发时间,自己重新的话很麻烦,需要实现协议和功能
如果调用FFmpeg,只需要调用FFmpeg的函数API
​ 1、avformat_open_input
​ 2、avformat_find_stream_info
​ 3、av_read_frame
​ 4、avformat_alloc_output_context2
​ 5、av_write_frame
​ 如果要自己实现:手动获取rtsp视频流保存到本地
​ 1、实现rtsp客户端,接收音视频包
​ 2、接收音视频包(rtp->h264)
​ 3、解音频包(rtp->PCM(alaw))
​ 4、音频转码(PCM->AAC)(mp4不需要再转码)
​ 5、重新封装音视频包
​ 需要了解协议,协议的实现,协议的合流,视频的格式,mp4的包头包尾等等,要搞好久的了

在此感谢王纲老师

你可能感兴趣的:(20音视频学习)