♪镜予歌&陈亦洺&尚辰-千秋迭梦
这些是不是看着脑瓜子嗡嗡的,那就来好好的说一说。
【1】硬解和软解
硬解:硬解是需要机器中专门的解码芯片来完成,质量因厂家的技术能力而定,部分厂商技术实力强,兼容性和解码效果做的比较好,而有些厂商技术实力稍差,兼容性和解码效果就略差。
软解:软解就是用CPU来解码,需要CPU的性能与处理能力较强,但对流媒体格式兼容性比较好,因为软解库是自己开发的,质量可以控制。
【2】播放器区别
调用别的播放器,那就是一般应用使用你自己下载的播放器播放应用内设没有地。
播放器常用的有哔哩哔哩出的IJK,谷歌出的EXO看图片。
每个播放器的设计就不说了,直接看支持什么格式,优缺点。
【3】渲染区别
TextureView和SurfaceView
TextureView是在Andriod4.0之后的API中才能使用。
SurfaceView是安卓老系统新系统都能使用的。
就是图片渲染,SurfaceView和TextureView均继承于android.view.View,与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。
TextureView比较好,SurfaceView呢,专门提供了嵌入视图层级的绘制界面,开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置。
SurfaceView但也有局限:
就是由于是独立的一层View,更像是独立的一个Window,不能加上动画、平移、缩放;
两个SurfaceView不能相互覆盖。
TextureView更像是一般的View,能被缩放、平移,也能加上动画。
TextureView只能在开启了硬件加速的Window中使用,并且消费的内存要比SurfaceView多,并伴随着1-3帧的延迟。
SurfaceView可以通过SurfaceHolder.addCallback方法在子线程中更新UI,TextureView则可以通过TextureView.setSurfaceTextureListener在子线程中更新UI,够在子线程中更新UI是上述两种View相比于View的最大优势均继承。
性能运行SurfaceView好,功能TextureView好灵活,实现丰富的视觉效果,就是占内存高。
优点:可以在一个独立的线程中进行绘制,不会影响主线程
缺点:Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,也不能放在其它ViewGroup中。SurfaceView 不能嵌套使用
优点:支持移动、旋转、缩放等动画,支持截图
缺点:必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。
一般看视频默认选择TextureView,他好阿灵活。
TextureView的优势在于其灵活性。由于它基于OpenGL ES,因此可以轻松地与其他图形和动画集成,实现丰富的视觉效果。这对于需要混合视频和其他图形元素的应用程序来说非常有用。例如,在一个电视节目中,可能需要同时显示视频、图像和文本。使用TextureView,可以方便地将这些元素组合在一起,而无需担心性能问题。
其次,TextureView在处理视频流时具有更高的性能。由于视频流直接映射到OpenGL ES纹理上,因此可以减少内存拷贝和转换的次数,从而提高渲染效率。这对于需要处理高分辨率或高帧率视频的应用程序来说尤其重要。例如,在一个体育直播节目中,需要实时渲染高清视频流,使用TextureView可以确保流畅的播放体验。
此外,TextureView还提供了更多的控制选项。开发者可以通过编程方式控制视频的播放、暂停、快进等操作,还可以调整视频的亮度、对比度和饱和度等参数。这使得开发者能够根据需要定制视频的显示效果,以满足特定的应用需求。
最后,有人说SurfaceView渲染视频画质高清,不觉得阿,TextureView处理高分辨率或高帧率视频渲染出来高清的,注意他是在Andriod4.0之后,硬件加速才能使用。
【4】视频的帧数,画质分辨率,码率,编码
(1)编码,目前有
什么是H.264/AVC?
H.264/AVC视频编码也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。是目前最普遍,用途最广泛的编码格式。H.264作为蓝光光盘的编码和解码标准而闻名。
什么是H.265/HEVC?
H.265编码是H.264的后继产品,是英文High Efficiency VideoCoding的缩写,也有人称其为HEVC,与H.264相同,H.265最初由ITU-T视频编码专家组和ISO IEC运动图像专家组为广播行业开发。
H.265被认为不仅提升图像质量,同时也能达到H.264两倍的压缩率(等同于同样画面质量下比特率减少了50%),支持4K分辨率,最高分辨率可达到8192×4320(8K分辨率),这是目前发展的趋势。
什么是H.266/VVC?
H.266编解码器为多功能视频编解码,目前市面上主流的视频编码有H.264、H.265等,H.266是继H.265之后的新一代视频编码标准,于2020年正式发布,当年11月正式发布的最新一代的编码标准。其中VVC含义是英文 Versatile Video Coding 的缩写,预示着H.266支持更广泛的应用。H.266的平均编码性能相对H.265的提高已经可以达到49%。
现在中国主流H.264,H.265,为什么不推6的呢,7的应该也有考虑出的了。都是视频压缩标准,用于将视频文件压缩为较小的文件大小,同时保持较高的视频质量。
不管是H264还是H265都是把每一帧的图片划分成大小不等的宏块组合,再从中以块细分,然后再对每个宏块进行编码(宏块说起,宏块是一部分像素阵列和对应信息的组合体)。
区别在于H264的宏块固定都是16*16,然后再以宏块作为基础,划分不同大小的子块,比如:子块的大小可以是 8X16、 16X8、 8X8、 4X8、 8X4、 4X4非常的灵活
而H265的切割宏块大小可达到64*64,可以提供更高的压缩效率(同样也需要更高的编码速度),当然也需要硬件上足够支持的算力。
都是为了解决视频传输过程中由于网络限制了传输一整张帧大数据的原因。因为1s中如果不经过编码压缩视频,1s时间需要传输的视频大小是很大的数据量的,比如一个1280x720的分辨率视频,那么不经过编码一秒钟传输的大小为1280x720x60~=843M。可想而知,需要的网络带宽是很大的。所以就出现了H.264,H.265,H266的编码技术。(VP8和VP9是谷歌开发的编码技术)。
H264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。
国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。
现在中国主流
(2)帧数
越高视频更流畅,现在主流的24,30,60,90,120帧。
帧,可以简单理解为是视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。
如果一个动画的帧率恒定为60帧每秒(fps),那么它在一秒钟内的帧数为60帧,两秒钟内的帧数为120帧。
帧是一页图片,帧率就是一秒种画面更新了多少页,这是一个过程量,常用fps表示。
若1秒播放5张照片,则当前帧率是5fps。帧率影响画面流畅度,帧率越大,画面越流畅;帧率越小,画面越有跳动感。
(3)码率和分辨率
码率在同样的分辨率下,码率越高,视频容量越大,画质也越清晰,质量也越好。
在单位时间内使用的数据流量,也叫码流率,码率越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质 更高。
码率的计算方法 码率(kbps)=文件大小(KB) * 8 / 时间(秒),本例中取视频文件的容量为 3.446G,视频长度100 分钟(6000 秒),计算结果:码率约等于 4818kbps(3.446 * 1024 * 1024 * 8 / 6000 = 4817.857)。
码率决定了每一帧的清晰度。
分辨率指的是视频纵横间像素的数量。如1080P的分辨率具体一点就1920X1080,也就是视频纵向有1080个像素,横向有1920个像素。分辨率越高,视频的清晰程度就越高。
目前常见的有8K、4K、2K、1080P、720P、540P。其中1080P是我们目前最常用的分辨率。不过随着科技的发展,2K和4K和8K现在也有一些视频也在用,一些直播和电视台也在用。
注意分辨率高码率低也可以导致视频模糊,分辨率越高可以让视频画面限制更清晰,分辨率低码率很高也是模糊的,分辨率比如4K码率也是有一定数值的太高的话文件大也是那么清晰,想要再清晰分辨率调再高码率就不用这么高的,
说的是参数,主要还是要看你拍摄的画面拍摄高不高清了也是有一定关系。