设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

FFmpeg学习之 一 (音视频理论知识)

2019-7-26 18:10 发布者: superadmin 评论 0 查看 1889
FFmpeg学习之 一 (音视频理论知识)1. 音视频理论知识1.1 根本概念1.1.1 音视频必备的根本概念1.1.2 音视频常见处理

FFmpeg学习之 一 (音视频理论知识)

  • 1. 音视频理论知识
    • 1.1 根本概念
      • 1.1.1 音视频必备的根本概念
      • 1.1.2 音视频常见处理惩罚
    • 1.2 直播
      • 1.2.1 推流
      • 1.2.1.1 推流常用协议简介
      • 1.2.2 拉流

1. 音视频理论知识

1.1 根本概念

1.1.1 音视频必备的根本概念

  • 常用的视频封装格式
    1)AVI 格式(后缀为 .avi)
    2)DV-AVI 格式(后缀为 .avi)
    3)QuickTime File Format 格式(后缀为 .mov)
    4)MPEG 格式(文件后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
    5)WMV 格式(后缀为.wmv .asf)
    6)Real Video 格式(后缀为 .rm .rmvb)
    7)Flash Video 格式(后缀为 .flv)
    8)Matroska 格式(后缀为 .mkv)
    9)MPEG2-TS 格式 (后缀为 .ts)

  • 常用的视频编码器
    1)H.264/AVC
    2)HEVC/H.265
    3)VP8
    4)VP9
    5)FFmpeg

FFmpeg 是一个开源框架,可以运行音频和视频多种格式的录影、转换、流功能,包罗了 libavcodec: 这是一个用于多个项目中音频和视频的解码器库,以及 libavformat 一个音频与视频格式转换库。
如今支持 Linux ,Mac OS,Windows 三个主流的平台,也可以自己编译到 Android 大概 iOS 平台。
如果是 Mac OS ,可以通过 brew 安装 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay

  • 常用的音频编程器:
    Mp3
    AAC

1.1.2 音视频常见处理惩罚

  1. 收罗
  • 为什么要收罗数据

无论是iOS平台,照旧安卓平台,我们都是须要借助官方的API实现一系列相干功能.起首我们要明确我们想要什么,最开始我们须要一部手机,智能手机中摄像头是不可缺少的一部分,以是我们通过一些体系API获取就要可以获取物理摄像头将收罗到的视频数据与麦克风收罗到的音频数据.

  • 怎样收罗数据

音频收罗
音频数据既能与图像连合组合成视频数据,也能以纯音频的方式收罗播放,后者在许多成熟的应用场景如在线电台和语音电台等起着非常紧张的作用。音频的收罗过程紧张通过装备将环境中的模仿信号收罗成 PCM 编码的原始数据,然后编码压缩成 MP3 等格式的数据分发出去。常见的音频压缩格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。
音频收罗和编码紧张面对的挑衅在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。

图像收罗

将图像收罗的图片结果组合成一组一连播放的动画,即构成视频中可肉眼观看的内容。图像的收罗过程紧张由摄像头等装备拍摄成 YUV 编码的原始数据,然后颠末编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。
图像由于其直观感受最强而且体积也比力大,构成了一个视频内容的紧张部分。图像收罗和编码面对的紧张挑衅在于:装备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理惩罚操纵如美颜和水印等。

视频收罗

摄像头收罗
屏幕录制
从视频文件推流

  • 留意点
  1. 处理惩罚
  • 常见的数据处理惩罚

音频和视频原始数据本质都是一大段数据,体系将其包装进自界说的布局体中,通常都以回调函数情势提供给我们,拿到音视频数据后,可以根据各自项目需求做一系列特殊处理惩罚,如: 视频的旋转,缩放,滤镜,美颜,裁剪等等功能, 音频的单声道降噪,消除回声,静音等等功能.

视音频处理惩罚

  • 数据处理惩罚工具

  • 留意点

  1. 编码
  • 为什么要编码数据

原始数据做完自界说处理惩罚后就可以举行传输,像直播如许的功能就是把收罗好的视频数据发送给服务器,以在网页端供全部粉丝观看,而传输由于自己就是基于网络环境,巨大的原始数据就必须压缩后才气带走,可以明确为我们搬家要将物品都打包到行李箱如许明确.
原始视频数据存储空间大,一个 1080P 的 7 s 视频须要 817 MB
原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频须要 11 分钟
而颠末 H.264 编码压缩之后,视频巨细只有 708 k ,10 Mbps 的带宽仅仅须要 500 ms ,可以满足实时传输的需求,以是从视频收罗传感器收罗来的原始视频势须要颠末视频编码。

  • 编码原理
    为什么巨大的原始视频可以编码成很小的视频呢?这此中的技能是什么呢?焦颔首脑就是去除冗余信息:
    1)空间冗余:图像相邻像素之间有较强的相干性
    2)时间冗余:视频序列的相邻图像之间内容相似
    3)编码冗余:差别像素值出现的概率差别
    4)视觉冗余:人的视觉体系对某些细节不敏感
    5)知识冗余:规律性的布局可由先验知识和配景知识得到

  • 常用编码工具
    视频编码器:
    1)H.264/AVC
    2)HEVC/H.265
    3)VP8
    4)VP9
    5)FFmpeg
    音频编码:
    Mp3
    AAC
    G711
    G726

  • 常用编码算法

  • 留意点

  1. 传输
  • 常用的传输协议

编码后的音视频数据通常以RTMP协议举行传输,这是一种专门用于传输音视频的协议,由于各种各样的视频数据格式无法同一,以是须要有一个标准作为传输的规则.协议就起到如许的作用.
常用传输协议:RTMP, FTP, TCP/IP, HTTP, XMMP
常用数据封装:json, xml,

  • 传输数据过程

  • 常用工具

  • 留意点

  1. 解码
  • 为什么要解码数据

服务端吸收到我们送已往的编码数据后,须要对其解码成原始数据,由于编码的数据直接送给物理硬件的装备是不能直接播放的,只有解码为原始数据才气利用.

  • 常用解码算法

  • 常用解码工具

  • 解码原理

  • 留意点

  1. 渲染

  2. 常用音频编码格式

  3. 常用视频编码格式

  4. 常用编解码算法

  5. 视频音频同步算法

  • 音视频同步需求

解码后的每帧音视频中都含有最开始录制时间设置的时间戳,我们须要根据时间戳将它们精确的播放出来,但是在网络传输中大概会丢失一些数据,大概是延时获取,这时我们就须要肯定的战略去实现音视频的同步,大要分为几种战略:缓存肯定视频数据,视频追音频等等.

  • 常用音视频同步算法

  • 音视频处理惩罚工具

  • 留意点

  1. 录像

  2. 音频播放

  3. 视频播放

  • 当地视频播放
    IOS常用的播放当地视频方式
    1). 体系自带API方式
    2)VLC+FFmpeg 方式
    3)SDL+FFmpeg 方式
    4)Vitamio以及ijkplayer等

Android常用的播放当地视频方式
1). 体系自带API方式
2)VLC+FFmpeg 方式
3)SDL+FFmpeg 方式
4)Vitamio以及ijkplayer等
Qt常用的播放当地视频方式
1). 体系自带API方式
2)VLC+FFmpeg 方式
3)SDL+FFmpeg 方式

  • 长途视频播放

  • 直播

1.2 直播

1.2.1 推流

将手机收罗到的视频数据传给背景播放端举行展示,播放端可以是windows, linux, web端,即手机充当收罗的功能,将手机摄像头收罗到视频和麦克风收罗到的音频合成编码后传给对应平台的播放端。

流程图如下:
在这里插入图片形貌

1.2.1.1 推流常用协议简介

推送协议紧张有三种:

  • RTSP(Real Time Streaming Protocol):实时流传送协议,是用来控制声音或影像的多媒体串流协议, 由Real Networks和Netscape共同提出的;
  • RTMP(Real Time Messaging Protocol):实时消息传送协议,是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议;
  • HLS(HTTP Live Streaming):是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议;
  1. RTSP协议

  2. RTMP 协议
    RTMP协议基于 TCP,是一种计划用来举行实时数据通讯的网络协议,紧张用来在 flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间举行音视频和数据通讯。支持该协议的软件包罗 Adobe Media Server/Ultrant Media Server/red5 等。
    它有三种变种:

  1. RTMP工作在TCP之上的明文协议,利用端口1935;
  2. RTMPT封装在HTTP哀求之中,可穿越防火墙;
  3. RTMPS类似RTMPT,但利用的是HTTPS毗连;

RTMP 是如今主流的流媒体传输协议,广泛用于直播范畴,可以说市面上绝大多数的直播产物都接纳了这个协议。
RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的毗连可以通过差别的通道传输多路网络流。这些通道中的包都是按照固定巨细的包传输的。

大抵流程图如下:
在这里插入图片形貌

  1. HLS协议

1.2.2 拉流

将播放端传来的视频数据在手机上播放,推流的逆过程,即将windows, linux, web端传来的视频数据举行解码后传给对应音视频硬件,终极将视频渲染在手机界面上播放.

流程图如下:
在这里插入图片形貌

音视频专家博客网络:

  1. 肖雷华大神:https://blog.csdn.net/leixiaohua1020/article/details/18893769
  2. 小东邪大神:https://www.jianshu.com/u/23f3ec991fed


路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:谈谈KAFKA的架构以及这种架构的优势下一篇:Druid架构讲解

相关阅读

一周热门

头条攻略!

日排行榜

相关分类