webrtc-android平台视频编解码分析
2013-11-12 11:19
211 查看
WebRTC是一个实时的视频通信功能,Android平台上的Chrome也提供了支持,在Chrome 29之后WebRTC功能趋于稳定,所以在之后的版本中默认被打开。也就是说不需要在”chrome://flags”中手动去打开该功能。
本节主要介绍一下Android平台上Chrome支持WebRTC硬件加速编解码的现状:
首先介绍一下WebRTC的视频传输的大致流程,摄像头在一端拍下图片,然后编码,通过RTP传输给另一端,另一端接收到图片后,解码,最后显示到屏幕上。该过程反复进行就实现了端对端的视频通信。
这里重点介绍一下编码和解码,Google实现的WebRTC只支持VP8编解码,不支持当今流行的H264(由于专利费用问题),VP8编码是Google开发的一种编码,已经开源了,开发者可以免费使用,更多信息可以参考http://www.webmproject.org/code/
在Android平台上WebRTC的视频编解码共有三种方案,即调用第三方编解码库(libvpx)和调用Android平台上的MediaCodec编解码,而MediaCodec编解码又可细分为两种,其一是MediaCodec的软件解码,其二是真正的GPU硬件加速编解码。MediaCodec采用软件或硬件编解码取决于平台GPU有没有实现VP8的编解码,如果平台支持,MediaCodec自然就会调用硬件去加速编解码,否则MediaCodec就会调用软件的编解码来完成。据写本文为止,只有三星的Nexus10支持VP8的硬件解码。至于VP8的硬件编码,目前还没有厂商支持,因为VP8的解码除了WebRTC需要之外,播放VP8编码的视频也可以受益,而VP8的硬件编码只有WebRTC有该需求,所以厂商在支持解码比编码的动力更强一些。在WebRTC实现的早期阶段(chrome
30之前),Android平台上都是采用第一种方式(调用libvpx)来完成编解码的。在chrome 31及其以后就会调用平台自带的MediaCodec完成编解码。
下面介绍一下这三种解码的效率如何:采用MediaCodec的硬件加速解码与libvpx相比,fps没有明显的变化保持在28左右,但是cpu的利用率可以减少一半,这样就可以解放CPU去执行其他的任务,UI响应会更及时,带来更好的用户体验。
本节主要介绍一下Android平台上Chrome支持WebRTC硬件加速编解码的现状:
首先介绍一下WebRTC的视频传输的大致流程,摄像头在一端拍下图片,然后编码,通过RTP传输给另一端,另一端接收到图片后,解码,最后显示到屏幕上。该过程反复进行就实现了端对端的视频通信。
这里重点介绍一下编码和解码,Google实现的WebRTC只支持VP8编解码,不支持当今流行的H264(由于专利费用问题),VP8编码是Google开发的一种编码,已经开源了,开发者可以免费使用,更多信息可以参考http://www.webmproject.org/code/
在Android平台上WebRTC的视频编解码共有三种方案,即调用第三方编解码库(libvpx)和调用Android平台上的MediaCodec编解码,而MediaCodec编解码又可细分为两种,其一是MediaCodec的软件解码,其二是真正的GPU硬件加速编解码。MediaCodec采用软件或硬件编解码取决于平台GPU有没有实现VP8的编解码,如果平台支持,MediaCodec自然就会调用硬件去加速编解码,否则MediaCodec就会调用软件的编解码来完成。据写本文为止,只有三星的Nexus10支持VP8的硬件解码。至于VP8的硬件编码,目前还没有厂商支持,因为VP8的解码除了WebRTC需要之外,播放VP8编码的视频也可以受益,而VP8的硬件编码只有WebRTC有该需求,所以厂商在支持解码比编码的动力更强一些。在WebRTC实现的早期阶段(chrome
30之前),Android平台上都是采用第一种方式(调用libvpx)来完成编解码的。在chrome 31及其以后就会调用平台自带的MediaCodec完成编解码。
下面介绍一下这三种解码的效率如何:采用MediaCodec的硬件加速解码与libvpx相比,fps没有明显的变化保持在28左右,但是cpu的利用率可以减少一半,这样就可以解放CPU去执行其他的任务,UI响应会更及时,带来更好的用户体验。
相关文章推荐
- WebRTC-Chrome Android平台上的硬件加速编解码分析
- WebRTC --- Chrome Android平台上的硬件加速编解码分析
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.1 工程思路与难点
- Android平台上使用SDL官方demo播放视频(使用ffmpeg最新版解码)
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.4 滤镜以及配套代码的制作方法
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——4.1高仿FaceU长按录像按钮
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——参考资料
- Android平台上基于HTML5+WebRTC的视频会议系统
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.2 来一份LOMO滤镜
- Android平台上使用SDL官方demo播放视频(使用ffmpeg最新版解码)
- Android IOS WebRTC 音视频开发总结(八十六)-- WebRTC中RTP/RTCP协议实现分析
- Android平台上使用SDL官方demo播放视频(使用ffmpeg最新版解码)
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——目录
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.1 GPUImage结构简析
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.2 GPGPU解决方案简述
- Android平台对H264视频硬解码
- WebRTC-Android 源码导读(三):视频硬编码实现分析
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.1 GPUImage结构简析
- Android平台使用MediaCodec进行H264格式的视频编解码