文章目录

  • 1、录制视频
  • 2、录制音频
  • 3、音视频同步

初入音视频领域,对一些音视频领域的概念,总是一知半解。下面将学习到的内容和自己的理解整理如下。

初次接触音视频领域时的小伙伴,可能大多数都像我一样并不太了解整体的流程。音视频领域细分的话,还可以分出很多分支,例如:嵌入式设备中的运用(例如设备有摄像头和麦克风,需要进行录制视频和音频)、客户端程序的研发中的运用(例如:QQ的1V1通话和视频,QQ群的nVn通话和视频,还有共享屏幕等,还有某音,某手,某宝中的直播功能),还有软件的截图、屏幕的录制,麦克风的录制等等,都渗透着音视频领域相关的技术。

在嵌入式设备中的音视频的应用无非就是录像,直播等。如果是录像的话,视频的来源可能来自于摄像头,或者输入的信号源,或者屏幕。音频源可能来自麦克风等设备。

我现在的公司正在做的项目大概是这样子的:

  • 设备支持的音频:内置和外置麦克风,也支持SDI和HDMI中内嵌的音频,还支持静音。
  • 设备支持的视频源:有HDMI接口、SDI接口、VGA、CVBS等接口,这些接口可以连接摄像头、或者一些其他视频源(像小米盒子,像电脑主机的HDMI输出接口等)。

功能就是可以对这些视频源和音频源进行录制,而且还支持画中画等功能。

引入一张0声学院Darren老师的图:

太好了,很方便学习者理解,就直接粘过来了

1、录制视频

无论你是需要录制音频还是视频,都需要源(音频源和视频源),我们的视频源就是摄像头。

  • step0:准备摄像头;

包括

  • step1:从摄像头采集视频数据;(图像帧)
  • 这个地方设计的知识点和技术还是挺多的,例如:采集的原始数据格式是什么类型的,是YUV还是RGB,YUV和RGB细分的话还包括YUV 4:4:4、YUV 4:2:2、YUV 4:2:0等,RGB细分的话还包括RGB565、RGB555、RGB24、RGB32、ARGB32等格式。
  • 1帧可以看作为1张图;
  • 那么1秒可以采集多少帧(即1秒采集多少张图),就会设计到帧率
  • step2:图像处理阶段;

我们采集完数据之后,就可以对采集到的数据进行处理了。
例如:曝光、色度、温和度、色差等等。都可以在这个阶段做。

  • step3:暂存到图像帧队列;

处理后的图像帧,会暂存放到图像帧队列中,等待视频编码器来对数据进行编码;
为什么要先存放到图像队列中呢?
因为我们设备(指:计算机、开发版等)并没有这么强的处理能力,如果一拥而上的话,也就凉凉了,所以先存放着,视频编码阶段边处理边拿数据。

  • step4:视频编码阶段;

如果图像帧队列中有数据的话,视频编码器就会进行处理。
如果不做编码的话,视频的体积是非常大的,而此阶段的技术也是非常多的,还可以称之为压缩。
例如常见的:H.264,H.265等压缩技术,也常叫视频编码算法。
我做过一个测试,将一段3 分钟 46 秒的1920*1080的视频的每一帧都转换成图片。

可以看到视频使用的是H.264编码的,如果将这个视频的每一帧转换成图片的话,会转换成6788张图片。
也可以简单计算一下:
1、一共3分46秒;
2、每秒30帧;
3分46秒等于226秒;
226秒*30帧=6780帧。
如果按照每张图1M的话,就将近7个G,而且也不可能每个图都是1M,图片的大小比较还是根据色彩的鲜艳程度来决定的。

可以看到,我这个就12GB;
可想而之,一个4分钟的视频就12个G。
如果不压缩的话你存几个片到你电脑里,你能存几个?

  • 所以此阶段主要就是对视频帧进行压缩。
  • 然后把压缩的数据放入到视频包队列中。
  • step5:将压缩完的数据,暂存到视频包队列;
  • step6:复用器进行音视频封装(例如:封装成mp4等);
  • step7:写入到文件。

2、录制音频

整个步骤和采集视频的步骤差不多。

从麦克风中或者其他设备中采集到的音频数据我们常称之为PCM数据。

3、音视频同步

音视频同步是比较困难的。

我们可以在采集数据的时候,给每一帧都加上时间戳。等复用器在封装音视频的时候,就可以按时间来处理了,这样就可以对音视频数据保证同步了。

音视频录制基础原理概念相关推荐

  1. 【音视频零基础入门 1】视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

    [音视频零基础入门 1]视频播放器原理.流媒体协议.封装格式.视频编码 一.视频播放器原理 1.1 解协议 1.2 解封装 1.3 解码 1.4 视音频同步 二.流媒体协议 三.封装格式 四.封装格式 ...

  2. Android OpenGL添加水印并录制视频--抖音视频录制原理

    Android OpenGL添加水印并录制视频–抖音视频录制原理 简单的视频录制,我们可以使用MediaRecorder,具体示例可以参考Gitee: Camera2VideoJava 本文将介绍采集 ...

  3. 5G时代来临,前端开发工程师必须了解的音视频入门基础知识

    1. 音视频基础 本文将给大家进行音视频基础的常规知识点的梳理.当然,短短的一篇文章并不能让大家立即变成音视频领域的专家,但这些知识点已经基本涵盖了音视频的入门知识.我们将按照下面的内容给大家 音视频 ...

  4. Android音视频开发基础(六):学习MediaCodec API,完成视频H.264的解码

    前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...

  5. 音视频开发基础知识(转载)

    音视频入门前,需要了解下一些基础概念,不必死记硬背,可之后再补再翻阅. 一. 颜色模式 RGB RGB颜色模型的主要目的是在电子系统中检测,表示和显示图像,比如电视和计算机,但是在传统摄影中也有应用. ...

  6. 《android多媒体api》之MediaRecorder音视频录制api

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  7. 音视频的同步原理——老文章,比较清晰

    http://blog.csdn.net/beyond_cn/article/details/20310177 1.   音视频同步的原理 2.  音视频同步的较正方法 3.  音视频同步时遇到的问题 ...

  8. Android音视频开发基础(七):视频采集-系统API基础

    前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...

  9. webrtc 入门第二章 音视频录制

    webrtc 入门第二章 音视频录制 一.介绍 1.媒体录制原理 ​ 在很多场景中回放音视频资源的需求是非常重要的例如会议,直播授课等.任何媒体形式的表情都可进行录制,如 ,,等.其中内容更加自由用户 ...

  10. 音视频开发基础知识到进阶剖析

    全网最强音视频开发教学--音视频开发基础知识到进阶剖析 1.要掌握多深的原理才能开始做项目 2.音视频基础有哪些必须掌握的 3.进阶需要学习什么项目 视频讲解如下,点击观看: 全网最强音视频开发--音 ...

最新文章

  1. 【SSRS】入门篇(二) -- 建立数据源
  2. Windows下MemCache多端口安装配置
  3. svn 目录结构 trunk java_如何彻底删除SVN中的文件和文件夹(附恢复方法)
  4. 线上会议丨中国中文信息学会2020学术年会将于12月27日举行
  5. 试图理解80836实模式转变为保护模式
  6. 攻略:如何快速赚取积分,Get云栖大会资料
  7. Highcharts数据表示(3)
  8. 「数据ETL」从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS中...
  9. 【渝粤教育】国家开放大学2019年春季 1018国际公法 参考试题
  10. HTML/CSS基础知识(四)
  11. IE和FireFox中的event事件
  12. 称称八字几两命——莫当真
  13. NAACL 2019自然语言处理亮点
  14. PyQt5+VTK环境搭建
  15. SpringBoot拦截器和过滤器的一起使用
  16. 如意淘商品推荐技术介绍之二:高级技术
  17. redis通配符批量删除keys——del
  18. HTML+CSS一篇文章搞定
  19. python对excel操作简书_python Excel 写
  20. 快捷餐饮之店家后台评论管理及餐桌管理实现

热门文章

  1. 【WinCC V7.5 入门】
  2. GB28181协议——对接摄像机
  3. 30种EMC标准电路
  4. 在uniapp中配置并colorui及阿里图标
  5. pc软件签名:数字证书的使用
  6. C语言 三角函数用法
  7. Adreno GPU上的DirectX应用开发简介 (1)
  8. Vue-cli3 ,js根据汉字或拼音模糊搜索功能,汉字支持同音字、多音字,支持首字母
  9. Java课程设计——日历的设计与实现
  10. nacos启动闪退总结