移动开发者的必知音视频基础知识
作为移动开发者,大多数时候会需要接触到音视频相关的开发,而其实严格意义上我也并不是专职的音视频开发工程师,只是在 2016 因为业务需要接触到音视频相关的领域,而开源的 GSYVideoPlayer 恰好火起来之后,为了解决系列问题成了“半桶水”的音视频开发工程师。 在维护 GSYVideoPlayer 的这几年里,我发现很多开发者对于音视频领域相关的基本概念还是不清楚,所以我也经常可以收获这样的 issue: “为什 么xxx 可以播而 GSY 不能播?” “我两个视频都是 mp4 为什么其中一个播放不了?” “为什么缓冲过的视频 seek 完还要重新请求数据?” “为什么播放有黑边?” “····” 而这些其实都是音视频开发过程中的常识性问题,所以本篇将通过 基本概念 、 常见问题 、 应用场景 来科普音视频开发的基础知识。 基本概念 首先,如下图所示是一个 .MOV 的视频文件,可以看到更多信息栏里编码器有 AAC 、 HEVC ,而这个就是视频的 音频编码 和 视频编码 ,而 MOV 其实就是 封装协议 ,这其实就是我们接下来要介绍的基本概念。 一般情况下,视频流从加载都准备播放是需要经过 解协议、解封装、解编码 这样的过程,其中 协议指的就是流媒体协议;封装是的是视频的封装格式;编码又分为视频编码和音频编码 。 协议 一般有 HTTP 、 RTSP 、 RTMP 等