FFmpeg 学习指南

基础知识

  1. 帧率 : 单位时间内显示画面的帧数, 30是可以接受的, 到60 会有明显的交互感提升, 但是超过75, 就不会有明显的提升体验, 并且如果 (帧率 > 屏幕的刷新率) 是无用的, 反而浪费了图像的处理能力, 因为监视器不能以这么快的速度更新;
  2. 分辨率: 图像的大小或者尺寸
  3. 刷新率: 每秒钟屏幕的刷新频率, 即屏幕上的图像每秒重绘的次数. 刷新频率越高, 图像与稳定, 抖动越小, 图片越清晰.
  4. **码率:**就是比特率, 标识单位时间内连续播放的媒体的比特数量, 比特率越高, 带宽消耗越多. 文件大小(b) = 码率 (b/s) * 时长(s); 视频的质量和码率和编码算法都有关系;
  5. **DTS:**内存中的比特流送入解码器解码的时间
  6. PTS: 视频帧显示的时间

推荐码率

在这里插入图片描述

FFmpeg 中的名词解释

  1. 复用(muxing) : 将原始的数据包(AVPacket)合成指定的封装格式
  2. 解复用(demuxing) : 将编码好的数据通过FFmpeg的libavformat库和解复用器进行解复用, 分离出原始音频和视频数据(AVPacket)
  3. 解码(decoding) : 将解复用后的音频包和视频包(AVPacket)通过解码器解码成未压缩的音视频帧(AVFrame)
  4. 编码(encoding) : 通过编码器将未压缩的音视频帧(AVFrame)编码成成原始的音频包和视频包(AVPacket)

直播中的名词解释

  1. 音频采样率: 采样率越高,数据量越大, 音频质量越好;
  2. 位宽: 表示一次能传递的数据宽度, 位宽越大, 一次能处理的数据流就越多。
  3. 声道数: 录制时候的音频源数量
  4. 图像格式: 通常是YUV
  5. 传输通道: TCP 传输或者UDP 传输
  6. **分辨率:**表示图像中存储的信息量, 指每英寸图像内存中有多少个像素
  7. **采样率:**指每秒从连续信号中提取并组成离散信号的采样个数;
  8. **fps:**指画面每秒传输的帧数。
  9. **RTMP:**基于TCP的网络协议
  10. WebRTC 底层基于UDP和SRTP实现, 可以实现点对点的通信。
  11. **CDN:**内容分发网络, 通过在现有的网络中增加一层新的网络架构, 将网站内容发布到离用户最近的网络节点上,这样用户可以就近获取所需的内容,
  12. CDN的常用架构
    1. 缓存服务器: 是直接提供给用户访问的站点资源, 由一台或者多台服务器组成,当用户发起访问时,其访问的请求被智能DNS定位到距离用户最近的缓存服务器,如果用户所访问的内容刚好在缓存里面,则直接把内容返还给用户, 如果用户访问的内容没有缓存,则缓存的服务器向邻近的缓存服务器或源站抓取内容返还给用户。
    2. 智能DNS: 是整个CDN技术的核心,主要根据用户的来源,以及当前缓存服务器的负载情况 将用户的访问请求指向距离用户较近且负载较小的缓存服务器, 通过智能DNS解析, 让用户访问同服务商且负载较小的服务器。

流程描述 :
主播开播时向智能DNS发送解析请求, 智能DNS返回最优的CDN节点的IP地址, 主播采集音视频数据发送给CDN节点, CDN节点进行缓存等处理, 观众要观看这个主播的视频, 向智能DNS发起解析请求, 智能DNS返回最优的CDN节点的IP地址,观众向CDN节点请求视频数据,CDN节点同步其他节点的音视频数据,之后CDN节点将音视频数据发送给观众。

  1. 拉流:
    1. 解析二进制数据, 从中得到相关的流信息
    2. 根据不同的封装格式解复用
    3. 得到以编码的H.264视频数据和AAC音频数据
    4. 使用硬解码或者软解码来解压音视频数据
    5. 经过解码后得到原始的YUV数据和PCM数据
    6. 做音视频同步, 在FFmpeg中,使用音频作为参考时钟,视频比较当前的音频时钟,如果快了, 就增加延时, 如果慢了,就减少延时。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值