引子:

半年前搞的HJY云导播项目,因为有个多流直播且流组合切换的特殊需求,从 vlc 摸索折腾到Vitamio sdk,七牛直播 sdk,金山云 sdk 等等,到回归 ffmpeg和 ffplay还有基于 ffplay 的 ijkplayer,经历了一段蛮揪心的视频播放技术探索。回过头来,都有点生疏了细节,不过主干的思想和直播化改造ijkplayer的过程还是值得做个回溯的。

音视频base:

  1. 音视频入门,可我之前总结的 《入门启发:音视频的简单理解》
  2. 里程碑1=>熟悉 FFMpeg,可参考 《FFMPEG详解》
  3. 里程碑2=>熟悉 VLC,可参考《VLC架构及流程分析》VLC 官网具完整文档、vlc模块化思路是其架构核心《VLC 关键模块结构分析》
  4. 里程碑3=>熟悉 ijkPlayer,到这一步就更了解移动音视频 sdk 了。可参考《ijkPlayer 系列分析》
  5. sample_cmd1 #:** ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks ** 了解音视频文件的繁杂参数群。
  6. sample_cmd2 #:** ffplay rtmp://live.hkstv.hk.lxdns.com/live/hks ** 了解音视频解码、同步、渲染的过程。

简要回顾:

  1. 这里ijkPlayer播放器是一个包括iOS、Android两个平台的播放器。
  2. ijkPlayer是Bilibili网址基于FFmpeg的简易ffplay播放器来进行开发的。相比于更有名的VLC播放器,ijkPlayer更精简,代码量更小,更方便改造。
  3. ijkPlayer 的 c 层内核是ffplay 。而ffplay又是 ffmpeg 的一个使用示范。ijkplayer 最重要的意义就是在根据平台来硬解码的优化。
  4. 三条关键 pipe:ijkPlayer的初始化流程,音频文件读取流程(网络流读取),音频解码与视频解码和音视频同步渲染流程。这里面就主要有 三层 cache,读取 cache,解码 cache,渲染 cache。参考下图取自《VLC架构及流程分析》
  5. 《入门启发:音视频的简单理解》 E、F 部分。

pic

主要目的:

移动视频直播的需求,一般比较重视的特性和目的,

  1. 规避花屏、规避弱网卡顿。只是视频播放最基本的要求了,特别是直播中视频质量息息相关着创收的钱袋子。
  2. 直播的秒开。不要太高估用户的耐心,也不要低估产品追求最极致的用户体验的决心。
  3. 直播的低延迟。既然直播,互动性占据很大的有趣重要程度。所以以前以视频稳定播放为第一,现在转向了最低延迟播放为第一追求。

分支特性:

特性的实现,也都是为着上方的主要目的来的。

  1. 规避花屏、规避弱网卡顿。这点得综合的处理了。规避『花屏』的出现,其实就是在『录制端、中转端、客户端』三处对视频 I、B、P帧编码解码时做『纠错性处理』,不至于出现找不到关键帧 I 的导致花屏。至于卡顿,移动直播在复杂的网络情况下确实难以避免,只能在技术层面动态调整,在『帧率、码率、分辨率』参数间做出折中方案,另外当网络实在糟糕了,则才去优先音频传送,视频画面冻结的思路。
  2. 直播的秒开。思路是,a最快拿到第一帧 I帧,b最快将第一张画面渲染到屏幕。这就需要服务器一侧将 gop 进行缓存,在连接建立时第一时间给到。也需要播放端最快获取、解析、渲染上这张画面。所以客户端也需要在几处逻辑中对缓存进行特别的『优先』操作。
  3. 直播低延迟。服务器和客户端同时优化多级缓存中的默认时长。其实具体实现时,还需要考虑在网络平均质量、缓存的稳定效率与紧追效率间做出一些折中方案的选择。
  4. 紧追效率。这点金山云直播 sdk 应该是最早做到的。从它的 sdk 注释,以及侦测它的缓存市场参数,可以知道它是采用『维护最佳缓存』方案,就是在 cache 过多时,最快消耗掉缓存,达到紧追视频发生源时间的目的。

github地址:

https://github.com/limbo0312/ijkplayer-liveYY


原文 on evernote:《回顾&总结:ijkPlayer 直播特性分支 》

1
2
3
4
5
6
7
8
9
10
11
《寻访明德》

闭门落日扫尘心,

闲暇乘音览物理。

空雨抱月缈临渊,

感怀天地运息息。

小明EGS201701

往前游览中原之国优秀的入世大人和灿烂作品,偶遇欣喜之极拍案而起,甚感有耶律洪基『愿生生世世于中国』的大愿。

回溯每每感慨,临而立之年,沐浴皓月恩化甚久,受高魂恩德庇佑,却不绝『立世』落志之寄望, 倍为惭愧。

年初拼了个长假回家,年年岁岁,表哥们也都结婚了,看着小侄女诺诺从空中来再慢慢展示出灵气袭人的性情,岁月荏苒,尽显造化万千,吾心波澜渐起。

对笑虚空泯幽求。

梦里最好消解白日形神忧愁,故吾常偶得神游万方之景象。记得第一回梦中看到诺诺,在一条古老的径道弄里,她爸爸背着她在脖子上。心忧忧的叔叔我谨慎脚下的片片砖块,不敢前视道路悠长。小诺诺突然侧头回看过来,让我甚为激动,瞬时明亮了一层心境。文字之力,或许难于表达这种感受,如饮气一种苍古的烈酒,刹时猛烈畅快于一生的砥砥前行。

既然是寻访,总有那些一点亮眼的品性,命气,惯力,多重视野。

中古大人之命气。

欲知前尘,观今时命念。欲明后世,理当下『俯仰』。

『俯仰频段』即为『实业』,但为大业的,用力虽极,草莽屠戮,但怀德仁性。接受不完美的碰撞,接受残酷的实情,宽世人昏愚。不以陋世负苍生。广积粮,来去而自由。

听皓月,迎浮世千重变。

日月星辰运转不息,颠倒梦幻。云烟过后,洗涤尘屑,留在无尽时间中的磨砺才是最实在的。一些过往的隽永秀丽人和物,都具有这般魅力。由衷天然的惯性力不是随便矫揉可以摆出来的。

感怀天地之恩泽。

变换多重视界来看待平凡的东西也会有诸多体悟,何况顺承天地恩泽的崇拜中。有句老话,天行有常,不为尧存,不为桀亡。但也不否认天地有所好恶,灵气聚集多得赖山川滋养,灵气汇聚则慧力强健,视野呈现得更为斑斓壮阔,于是乎才有力道摆渡大江大浪。

这些年零碎总结的一些小寻访感触。

nuonuo-tangyuan

援引两本书论述了资本主义制度的书,作为该小题的启发点。近代马克思、恩格斯的《资本论》。2014年法国经济学家托马斯·皮凯蒂的《21世纪资本论》。这两本书都对现在『高级的金融建筑』做出了预判(资本论)和判析(21世纪资本论)

a、《资本论》的预判:

马克思论股市投机:* 由这种所有权证书的价格变动而造成的盈亏,以及这种证书在铁路大王等人手里的集中,越来越成为赌博的结果。赌博已经代替劳动,并且也代替了直接的暴力,而表现为夺取资本财产的原始方法。*

——《马克思恩格斯全集》第25卷,第541页 book link 1

b、《21世纪资本论》的判析:

托马斯·皮凯蒂主要使用翔实的数据佐证了一个的结论——资本主义一百年来,资本的边际收益大于劳动的边际收益(即资本收益率远远大于劳动生产率不,大于社会生产率),最终贫富差距因此会越来越大。 book link 2

1、『变』是『不变』

本质来说,资本主义和共产主义都是理想化的站位导致的矛盾。回顾实际的历史进程,可以发现双方都在相互持有对方的特质。

大的国家制度问题聚焦到微观,其中之一就是在面对『效率优先』还是『公平优先』岔路口的选择。这个岔路口,我们是吃过教训的,建国惨痛的大锅饭的教训。即便当今欧盟小清新主义中那些个搭便车导致的五猪国问题(看着吧==>欧盟垮台是迟早的)。最佳的选择无疑是,在效率优先的前提下,用制度来保证公平竞争的条件。让公平竞争的上下阶层流动的社会血脉不被『先富起来』的『一小撮』高官、富豪堵塞。这好比,社会机体也就像人体一般,若血脉不通,必然机体暴毙(or社会动荡改朝换代),但是放心吧,庸碌的肉食者阶级不会主动进行制度变革的。除非有内部压力,有外部压力才有可能刺激变革。所以说,美日亡我之心不死对中华未必都是坏事呢。

以上就是当代世界的简单大规律冲撞矛盾,这里也变出了的一个大现象是『金融资本主义』,无论红色国家还是蓝色国家都逃脱不开。

2、工业资本引擎VS金融资本引擎

工业变革解放出来的英国,信息与军事解放出来的美国,都是乘着某一时代的新引擎东风强大起来。目测下一个时代的主旋律该有个『金融原子弹』,金融的大章鱼把其他国家的金融体系炸烂了,再吃掉他们的实业机体,是一种更文明优雅的侵略方式。动物族群的发展,逃不开侵略与被侵略,和平是暂时的,战争从未离去,因为有人性就有冲突,有冲突就有战争,只不过是以什么战争来展现出来。

3、生产力VS生产率VS影响力VS之革命

近代给近乎亡国灭种的中国人的最大教训是,落后就要挨打。而今,生产力发展到了饱和的曲线,人们差点就忘记了生产力一说。生产力是基础建筑,生产率是制胜之道,影响力是垄断之路,要取得一骑绝尘的优势,必须要有革命性突破,『解放思想』的制度变革勇气,『科技是第一生产力』的革命性远见,更深的细节是生产率革命、影响力革命。

4、资源VS财富VS货币

占据多少社会资源和影响力,谓之财富。国家信用的货币,俗称拥有的钱。随着通货膨胀和隐形财富掠夺,财富和钱不能简单的划上等号。因为低成本的货币很容易吞噬高价值的实体财富,高价值的实体资源才是人类永恒的追求。

5、多劳多得VS生产资料垄断VS阶层固化VS矛盾战争

朝代之初,人人都是赤脚打拼,天然公平是多劳多得。慢慢的,有人性,就有差异,有差异就有分化。再被时间复杂化的规则叠加,懒惰的后代和精进的后代,早已经不再一个起跑线上。在残酷的城市文明中生存,赤贫的人们只能求三餐果腹,有屋栖身。每朝每代都是如此轮动。即便科技再文明,生产力再强大,剥离不了人性,阶层固化直至战争是永恒的宿命。美好的社会福利别太当真的,天行健君子以自强不息。如毛同学自励诗『与天奋斗,其乐无穷;与地奋斗,其乐无穷;与人奋斗,其乐无穷!』,运转不息是最珍贵的财富。

6、金融资本主义VS金融方法论

金融资本主义将会在未来很长时间是个大趋势,一套金融方法论,一套对冲投资稳妥收益的方法论是一种实在的利求价值。

读书参考: