视频直播的流程可以分为如下几步: 
采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>解协议->解封装->解码视音频>视音频同步

一、采集

  1.音频采集:主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,然后编码压缩成 MP3 等格式的数据分发出去。常见的音频压缩格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等

2.图像采集 :图像的采集过程主要由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。

二、视频处理

  分为音频和视频处理,音频处理中具体包含混音、降噪和声音特效等处理,视频处理中包含美颜、水印、以及各种自定义滤镜等处理。

三、编码和封装

  1.编码的意义:原始视频数据占用存储空间很大,通过编码压缩形式来使存储空间变小

  2.编码的核心:就是去除冗余信息

         1)空间冗余:图像相邻像素之间有较强的相关性 
         2)时间冗余:视频序列的相邻图像之间内容相似 
         3)编码冗余:不同像素值出现的概率不同 
         4)视觉冗余:人的视觉系统对某些细节不敏感 
         5)知识冗余:规律性的结构可由先验知识和背景知识得到

  3.编码器的选择

   下面是一些常见的视频编码器: 
   1)H.264/AVC 
           2)HEVC/H.265 
           3)VP8 
           4)VP9 
           5)FFmpeg 
           注:音频编码器有Mp3, AAC等。

  4.封装

    封装的含义:封装就是媒体的容器

    下面是几种常见的封装格式: 
    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)

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

四、推流到服务器

五、服务器流分发

六、解协议

七、解封装

  含义:将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据

  封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

八、解码视音频

  含义:就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据

  视频的原始数据是YUV420或者是RGB,音频的原始数据是PCM

九、视音频同步

同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

转载于:https://www.cnblogs.com/liunx1109/p/9217580.html

视频采集以及播放的流程相关推荐

  1. webrtc简单案例——音视频采集和播放

    webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...

  2. WebRTC音视频采集和播放示例及MediaStream媒体流解析

    WebRTC音视频采集和播放示例及MediaStream媒体流解析 目录 示例代码--同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStre ...

  3. 【USB网络摄像头】基于mjpeg-streamer的视频采集与播放【QT上位机软件】

    前言 最近一直在尝试制作一个,网络摄像头,先后分别尝试了使用QT包装的UDP类TCP类,和LINUX中的socket编程等方式,但是非常遗憾,都没有取得非常好的播放效果.以为只要一帧一帧的传输视频数据 ...

  4. webrtc源码分析之-从视频采集到编码流程

    peer_connection中从视频采集到编码的流程 摘要:本篇文章主要讲述当我们通过peer_connection完成推流时,视频从采集到编码是如何衔接的. 既,视频采集后如何传送到编码器.重点分 ...

  5. Metal之实现视频采集与实时渲染

    一.视频渲染实现思路 ① 思路说明 通过AVFoundation进行视频数据的采集,并将采集到的原始数据存储到CMSampleBufferRef中,即视频帧数据(视频帧其实本质也是一张图片). 通过C ...

  6. 安卓 camera 调用流程_音视频开发之旅(四)Camera视频采集

    目录 Camera基础知识 视频采集的流程 遇到的问题和常见的坑(重点) 收获 一. Camera基础知识 Camera 有几个重要的基础概念. facing相机的方向,一般后置摄像头和前置摄像头. ...

  7. WeBRTC IOS视频采集流程

    因CSDN MardDown语法问题,流程图部分不兼容有道云笔记,所以流程图部分请拷贝到有道云笔记生成查看. iOS视频录制: 同拍照一样视频录制功能有两种实现方式 UIImagePickerView ...

  8. 直播入门(二)从视频采集到客户端播放

    文章目录 概述 采集 音频采集 视频采集 编码 视频编码格式 音频编码 封装 推流 分发 播放 概述 一个主播开播到用户能观看,一共经历了以下几个过程: 采集:通过摄像头,麦克风等采集图像和音频数据 ...

  9. 简单的视频采集demo

    打算做个简单的聊天软件,其中一个我没做过的,就是视频采集. 在网上查了许久资料,终于搞清楚了dshow采集视频的流程 参考资料如下: https://msdn.microsoft.com/en-us/ ...

最新文章

  1. 在Windows系统上安装Ruby On Rails
  2. Golang sync.Map原理
  3. Angular中实现路由跳转并通过get方式传递参数
  4. 机器人铁锈斑斑好吗_工业机器人系统运维员是什么职业?这个职业好吗?
  5. echarts tooltip被遮挡_echarts 的tooltip定位到当前图,避免溢出和遮挡
  6. java 动态加载控件_JS动态添加节点后渲染为EasyUI控件,EasyUI动态渲染解析解决方案...
  7. Windows CE的学习路线
  8. LeetCode解题思路—区间合并
  9. android中页面跳转以及数据在Activity之间的传递
  10. VMware Workstation环境下的Linux网络设置
  11. Eplan2.7 安装教程
  12. OpenGL学习之颜色
  13. 智能陈桥五笔输入法 for linux,解决在Linux下安装陈桥五笔输入法的方法
  14. 使用Python分析统计《大秦帝国》人物及七国的出场次数 的顺序(前20)
  15. Flink编程中遇到”scala.tools.reflect.ToolBoxError: reflective compilation has failed“的解决方法
  16. jquery 自动触发 标签的click()方法
  17. 【以太网硬件十八】网卡是什么?
  18. 运用简单的超市购物车系统,理解重写equals、hashcode的意义
  19. 大数据和商务智能(BI)的区别
  20. C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…

热门文章

  1. (十六)java中的String
  2. 编写一个2分10秒的倒计时脚本
  3. python连接ssh_使用Python连接到SSH
  4. linux磁盘写保护怎么修改_linux – mount:无法重新安装块设备/ dev / sda5读写,是写保护的...
  5. 可用子网数要不要减2_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
  6. vantabs多页渲染_选择引擎渲染页面
  7. ITester软件测试小栈长期持续在线征集
  8. Python自动获取Redi缓存验证码
  9. Cannot update while running on a read-only volume. The application is on a read-only volume. Please
  10. 24小时BTC全网合约成交数据显示:多头占优