将学习到的内容和自己的理解整理如下。
初次接触音视频领域时的小伙伴,可能大多数都像我一样并不太了解整体的流程。音视频领域细分的话,还可以分出很多分支,例如:嵌入式设备中的运用(例如设备有摄像头和麦克风,需要进行录制视频和音频)、客户端程序的研发中的运用(例如:QQ的1V1通话和视频,QQ群的nVn通话和视频,还有共享屏幕等,还有某音,某手,某宝中的直播功能),还有软件的截图、屏幕的录制,麦克风的录制等等,都渗透着音视频领域相关的技术。
企业回上海逢友信息科技有限公司成立于2004年,是由一批海归青年所创办的高科技企业。上海逢友信息科技有限公司是美国传感器设备有限公司SENSOR PRODUCTS INC大中华区独家代理,其压力分布及压敏纸产品广泛服务于中国电子、汽车、家具、运动、医疗等行。
在嵌入式设备中的音视频的应用无非就是录像,直播等。如果是录像的话,视频的来源可能来自于摄像头,或者输入的信号源,或者屏幕。音频源可能来自麦克风等设备。
在嵌入式设备中的音视频的应用无非就是录像,直播等。如果是录像的话,视频的来源可能来自于摄像头,或者输入的信号源,或者屏幕。音频源可能来自麦克风等设备。
一帧=1/12秒 帧——就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。帧数就是在1秒钟时间里传输的图片的量,也可以理解为图形处理。
我现在的公司正在做的项目大概是这样子的:
设备支持的音频:内置和外置麦克风,也支持SDI和HDMI中内嵌的音频,还支持静音。
功能就是可以对这些视频源和音频源进行录制,而且还支持画中画等功能。
1、录制视频
无论你是需要录制音频还是视频,都需要源(音频源和视频源),我们的视频源就是摄像头。
step0:准备摄像头;
包括
step1:从摄像头采集视频数据;(图像帧)
1帧可以看作为1张图;
那么1秒可以采集多少帧(即1秒采集多少张图),就会设计到帧率
step2:图像处理阶段;
我们采集完数据之后,就可以对采集到的数据进行处理了。
例如:曝光、色度、温和度、色差等等。都可以在这个阶段做。
step3:暂存到图像帧队列;
处理后的图像帧,会暂存放到图像帧队列中,等待视频编码器来对数据进行编码;
为什么要先存放到图像队列中呢?
因为我们设备(指:计算机、开发版等)并没有这么强的处理能力,如果一拥而上的话,也就凉凉了,所以先存放着,视频编码阶段边处理边拿数据。
小编整理了一些学习资料、教学视频和学习路线图共享在群文件,资料包括《Andoird音视频开发必备手册+音视频最新学习视频+大厂面试真题+2022最新学习路线图+项目实战源码》等等(C/C++,Linux,FFmpeg ,webRTC,rtmp,hls,rtsp,ffplay,srs),免费分享,有需要的可以搜索788280672加群自取~希望对大家有帮助!
step4:视频编码阶段;
如果图像帧队列中有数据的话,视频编码器就会进行处理。
如果不做编码的话,视频的体积是非常大的,而此阶段的技术也是非常多的,还可以称之为压缩。
例如常见的:H.264,H.265等压缩技术,也常叫视频编码算法。
我做过一个测试,将一段3 分钟 46 秒的1920*1080的视频的每一帧都转换成图片。
也可以简单计算一下:
1、一共3分46秒;
2、每秒30帧;
3分46秒等于226秒;
226秒*30帧=6780帧。
可以看到,我这个就12GB;
可想而之,一个4分钟的视频就12个G。
如果不压缩的话你存几个片到你电脑里,你能存几个?
通常来说,大部分画面一秒钟都是24帧,但是也有25帧的情况。随着科技的发达,现在很多高科技电影可以达到一秒钟48帧,帧数越高,画面的视觉感就越强。PAL制式的电视机是一秒25帧,NTSC制式的电视机是一秒30帧。一帧对应的。
所以此阶段主要就是对视频帧进行压缩。
然后把压缩的数据放入到视频包队列中。
step5:将压缩完的数据,暂存到视频包队列;
step6:复用器进行音视频封装(例如:封装成mp4等);
step7:写入到文件。
2、录制音频
整个步骤和采集视频的步骤差不多。
从麦克风中或者其他设备中采集到的音频数据我们常称之为PCM数据。
3、音视频同步
音视频同步是比较困难的。
我们可以在采集数据的时候,给每一帧都加上时间戳。等复用器在封装音视频的时候,就可以按时间来处理了,这样就可以对音视频数据保证同步了。