H.265 播放
系列文章:
一 简介
上一篇已经介绍了 H.264 和 H.265 之间的一些关系和基础,简单来说,H.265 标准围绕着视频编码标准 H.264,保留原来的某些技术,同时对一些相关的技术加以改进。
改进点包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H.264 可以低于 1Mbps 的速度实现标清(分辨率在 1280P720 以下)数字图像传送;而 H.265 则可以实现利用 1~2Mbps 的传输速度传送 720P(分辨率 1280720)普通高清音视频传送。
更多二者之间的差异,也可以查看H.265与H.264的差异详解这篇文章做个了解。
二 H.265 视频播放
2.1 H.265 带来的问题
对于我们来说,编码技术的优化是好的,但功能的实现更加重要。例如,已经接入过 H.264 的设备,要新接一些 H.265 的设备,必然会带来两个问题:一是怎样接入(播放);二是怎样做好兼容。本篇我们先只考虑第一个问题,即怎样实现 H.265 视频的播放?
2.2 视频播放器典型架构
通常播放器都是由播放器内核 和 UI 界面组成。再做细分,播放器内核还包括 解码器、多媒体引擎等;UI 包括 UI 组件、业务逻辑模块。
如果从数据流的角度来讲,播放器所起的作用包括读取、解析。渲染音视频文件,涉及的模块和数据流转过程如下:
其中,source 是指多媒体数据流,来源于网络或本地文件;
demux 是解复用器/解服用模块,媒体文件和网络流是将音视频压缩编码后和其他数据一起打包传输的,解封装与上述过程正好相反,是将音视频流做分离处理。支持的常见格式,包括 mp4,flv,m3u8,avi 等等;
decoder 是解码器,上面的两个分支分别是音频解码器和视频解码器;解码器其实也属于数据解析的一种,只不过更多的是负责对压缩的音视频数据进行解码,拿到原始的 YUV 和 PCM 数据,常见的视频压缩格式如:H.264、MPEG4、VP8/VP9,音频压缩格式如 G.711、AAC、Speex 等
video sink 是视频渲染显示模块,音频是声卡等。这一层也可以理解为渲染层,即负责视频数据的绘制和渲染。不同的平台有不同的渲染 API 和方法,比如:Windows 的 DDraw/DirectSound,Android 的 SurfaceView/AudioTrack,跨平台的如:OpenGL 和 ALSA 等。
三 H.265 播放方案
版权声明: 本文为 InfoQ 作者【程序员架构进阶】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ccbd9d3715a0b33850c8f87d】。文章转载请联系作者。
评论