视频播放的那些事(1)

最近,我抱着好奇的心接下了一个网页播放视频(直播和回放)的功能,没想到坑有点大。我说:“现在系统的监控平台完全没有,没办法调试代码啊。”“那你就要想办法喽。”项目经理这么说。我心说“没毛病”,嘴里说“哦”。

项目经理找了一个以前做过监控视频的人支持我。给了一个示例程序,完全跑不起来,看了半天代码也没有头绪。我也完全听不懂对方说的词汇,例如 dvr、ipc、码率。

自己折腾了几天,现在总算有点头绪了。现在分享一下笔记。

(1) *.avi *.mp4 *.flv *.mkv ... 这些格式成为封装格式(container formats)。封装格式就是把视频数据和音频数据打包成一个文件的一种规范。

(2)视音频技术主要包括:封装技术、视频压缩编码技术、音频压缩编码技术、流媒体技术。

(3)网络上播放一个视频文件需要经过

图片来源:https://blog.csdn.net/leixiaohua1020

(4)视频是需要一个单独的服务器的,这个服务器叫做流媒体服务器。视频从从服务器传输到浏览器还要遵循一定的协议,例如(RMTP,实时信息传输协议),这种协议叫做流媒体协议。

(5)解码视整个程序中最复杂的一个环节。经过解码,视频数据输出成为非压缩的颜色数据(你没看错,是颜色数据),而音频数据输出成为非压缩的音频采样数据。

(6)完成解码之后,程序将根据从解封装模块获取到的参数信息,同步解码出来的视频和音频数据,并将视频数据和音频数据送至系统的显卡和声卡播放。

(7)为了将视频编码,很多视频上的颜色的模式都不是 RGB,二是 YUV。YUV 这种模式能减少存储颜色所需要的空间。不经过压缩编码的视频是相当大的。

(8)音频压缩编码标准包括:AAC、MP3、AC-3 等。视频压缩编码标准包括:H.264、MPEG2、VC-1 等。

下面讲一些故事

这个是一个软件图标,名字读作 读 / ef ef em peg /。 FF的意思是 Fast Forward。这是一个开源的相当 6 的软件。它在 github 上的自我介绍是:

FFmpeg 是处理多媒体内容(如音频,视频,字幕和相关元数据)的库和工具的集合。

使用 FFmpeg 作为内核的视频播放器有:

暴风影音、KMPlayer、QQ影音、PotPlayer、Mplayer、ffplayer、射手播放器...

FFmpeg 几乎囊括了现存的所有视音频编码标准。

搭建流媒体服务器的是时候会用到 FFmpeg。

flv.js

我一直觉得 b 站(哔哩哔哩)的网页播放器做得很好。没想到这背后还有故事。

传言 b 站的 HTML5 播放器的核心 flv.js 是一个 96 年的童鞋独自开发的,据说工资只有 5000 不到,他觉得待遇不共,找 HR 之后得到了令人难受的答复,于是选择默默离职 。他在离职前的最后一件事是推动了 flv.js 的开源计划, flv.js 开源之后获得很大的关注,于是作者就出名了受到了不少关注。我知道的一个大牛关注了他的知乎。知乎上关于他的工资的讨论很热烈,很多人为他吐槽 b 站。

有不少人说 b 站失去了一位技术大牛。

雷霄骅

我发现这个人的名字可以直接用拼音输入法打出来。我是第一次知道这个人。

他在 CSDN 写了很多关于视音频技术理论、关于开源视频代码解读的文章,写得很好,评价很高。

评价有:“谢谢”,“透彻”,“博主什么时候出本书,我先预定”,“雷神”,“天妒英才”。一开始我没有特别注意“天妒英才”这个评价,后来发现好多文章都有,甚至还有“一路走好”这样的评价。于是我就百度了这个名字,没想到这个人 2016 年就已经离世。

他是中国传媒大学通信与信息系统专业博士生, 2016 年 7 月 17 日凌晨猝死于学校。

(完)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G1B4GP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券