查看详情

hls.js 源码解读【3】

这一篇主要分析一些辅助类函数的代码实现,扩展一些对 buffer 操作,web worker 等内容的学习。 performance 在 playlist-loader.js 中我们可以看到这行代码 stats.tload = performance.now(); performance 提供了一个高精度的时间访问 API。它能够查看到 Navigation Timing,Resource Timing这些准确的时间结果。 Navigation Timing API能够帮助网站开发者检测真实用户数据(RUM),例如带宽、延迟或主页的整体页面加载时间。 其中 performance.now()可以得到距离页面开始请求到现在相差的毫秒数。 web worker Web worker, Javascript是单线程的,所以如果页面中的Javascript有大量计算的话,很容易阻塞页面的动画或者交互响应。HTML5中的Web Worker就使Javascript的多线程编程成为可能。 在 demux/demuxer.js 中我们可以看到这么一段代码: import work from 'webworkify-webpack'; //... const vendor = navigator.vendor; 详情 »

查看详情

hls.js 源码解读【2】

上一篇 我们分析了 hls.js 的基本目录架构和代码执行流程,这一篇将主要分析 主链路实现代码的分析。 源码分析会点出核心的调用流程,其中一些不常用的方法或者比较容易理解的不做详细的注释。 hls.js 是模块打包的入口 import URLToolkit from 'url-toolkit'; import Event from './events'; import {ErrorTypes, ErrorDetails} from './errors'; import PlaylistLoader from './loader/playlist-loader'; import FragmentLoader from './loader/fragment-loader'; import KeyLoader from './loader/key-loader'; import StreamController from './controller/stream-controller'; import LevelController from './controller/ 详情 »

【转】 理解音视频 PTS 和 DTS

原文地址 : http://blog.csdn.net/x_iya/article/details/52495824 @ N3verL4nd 视频 视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。 image 但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧、P 帧、B 帧。 I、P、B 帧 I 帧、P 帧、B 帧的区别在于: I 帧(Intra coded frames):I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I 帧使用帧内压缩,不使用运动补偿,由于 详情 »

查看详情

《悟空传》

《悟空传》 同样在今年翻拍了电影。今何在作为编剧参与其中。上一次关于这部小说是《西游降魔篇》上映的时候,今何在参与了周星驰的电影。有时间读小说,其实觉得给自己的触动没有那么大。 其实读的时候,字里行间的内容给自己带来的冲击没有那么大,而且自己更加偏爱老派作家的小说,对于细节与对白能够更好切入进去。虽然故事和内心独白写的不错,总之这部作品自己不太喜欢这样的 style。 ⭐️⭐️⭐️ 推荐 详情 »

《从你的全世界走过》

大概读完这本书已是九月上旬, 但一直没来的写, 九月份的某晚也看完了电影版本的《从你的全世界走过》。 看完已是凌晨三点,很多人喜欢这样一段话: 我希望有个如你一般的人。 如这山间清晨一般明亮清爽的人, 如奔赴古城道路上阳光一般的人, 温暖而不炙热,覆盖我所有肌肤。 由起点到夜晚,由山野到书房, 一切问题的答案都很简单。 我希望有个如你一般的人,贯彻未来,数遍生命的公路牌。 于自己而言,那么多故事,才发现却没有一个匹配的上自己。好在,自己还没有失去喜欢人的能力,好在会遇见如此一般的人。去不去稻城亚丁,不重要,重要是有机会与你分享 TA 的故事。 我希望买的鞋子是你渴望的颜色。我希望拨通电话时你恰好在想我。我希望说早安你也刚起床。我希望写的书是你欣赏的故事。我希望关灯的刹那你正泛起困意。我希望买的水果你永远觉得是甜的。我希望点的歌都是你喜欢唱的。我希望我希望的是你希望的。 ⭐️⭐️⭐️⭐️ 推荐 详情 »

查看详情

《软件开发本质论》

书的内容不多,也就190多页的样子。这是一本偏项目管理书籍,没有涉及多么技术细节的地方。 实际上现在项目开发都离不开科学,科学的技术实现,以及科学的项目管理。 项目管理一定是有序的推进的,合理的组织,合理的需求计划,确保小版本迭代,确保最小可完成性,注重测试跟进。其实大家看了很多软件项目管理的书籍,大同小异,最终还是要落到管理者手中。他们如何确保一个项目健康的发展,才能更好的推进项目朝着合理的方向前进。 其实于每个开发者而言,也真的非常有必要读一读。因为我们作为参与者的一员,我们需要去理解每个单元目标,对于不合理的需求和组织调配,我们需要有自己的想法。敏捷开发说白了,就是让目标足够系列化,我们将目标细分到一个可预期的时间完成。小目标也有利于测试更近,防止超出预期的缺陷产生。 事实有的时候过多测试并不是意见坏事情, TDD会让开发者可产生的缺陷趋于非常小的数值,事实有过项目开发的经验,我们会发现后期进行密集功能性测试,爆出来的 bug 所给人的数量级是完全不可预估,最终造成项目时间的延迟。测试一定是便随着我们开发的,它永远不是独立于我们开发之外的。 最后给出: ⭐️⭐️⭐️⭐️⭐️ 推荐。 详情 »

微日记-20171105

天气阴。 今天去理发,看着镜子里的自己,理发店放着《成都》,然后心里就一阵波链,如果没有人,自己真的好像哭一场。 人还是感性的动物,看着街道堆积起的枯叶,看着旁晚点起的灯火。似乎自己都不知道去年11月份,一个人是这样过来的。一年了,看看现在的自己,发现似乎一个人本该适应现在的生活,但是回忆总会那么煽情,一句话,一棵树都会那么应景。 自己觉得一直很幸运的是,自己始终都没能放弃自己,无论是写这些文字给自己打气,还是一个人活着去实现那些有或者没有意义的目标,即使巨大的孤寂会袭击一个人,那个时候满脑海里还时常会想着《大男当婚》里曹小强的独白: 我曹小强,今年35岁,我对人真诚,我热爱生活,我努力工作,我一直想要有一个家,但现在我还没有,这也就是我的现实,我得面对这个现实,但是我相信,在这个世界上的某一个角落,肯定还有另外一个人,她也在等着我,她也在寻找我,为了她,我要更加热爱生活,我要每天都健健康康的,快快乐乐的,我要努力工作,拼命赚钱,就是为了有一天碰到她的时候,可以组成一个幸福的家,而我相信,总有一天,这一天会出现的,我不想错过她 大概忍受所有的苦痛或者不甘,心里才会强大吧。别哭, 详情 »

查看详情

Mac 下安装 Tensorflow

Tensorflow 是一个使用数据流图进行数值计算的开源软件库。它由谷歌公司开源出去,方便全世界的开发者使用它来进行机器学习(Machine Learning)。 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从图象的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用(百度百科) 安装 安装方式有很多种,自己推荐 pip 的形式。 打开终端输入下面命令: sudo easy_install pip sudo easy_install --upgrade six sudo pip install --upgrade <https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl> 如果你访问 storage. 详情 »

查看详情

微日记-20171103

天气晴。 11月的第一篇。今天看了气温,0度刚刚好。似乎冬天的气氛就差屋子里的暖气,和夜晚不时的冷风。 前些天得知小侄女离职,大概这是第二位,昊哥走的那么静悄悄的,她也是。每每谈到离职,便又觉得这个江湖上似乎,这个群体又会少了那么一丝生气。给小侄女的几句话:但愿十年后,你还能喜欢你的工作,但是它也不妨碍你去喜欢上其他的事业。 小侄女答道:嗯,十年后肯定会喜欢前端这份工作,也会更加热爱自己的生活。于熟悉的人离职,多少有些不舍,但是那个机会于她而言又是那么好,还是会祝福,希望新的机会,加油。 双十一临近,手机上充斥着各种双十一的活动,感觉力度空前。PM总能想尽办法换着各种玩法去吸引消费者“剁手”。似乎今年也不知道要买些什么,唯独期待的反倒是马老师主演的微电影,甄子丹,李连杰,吴京,这些爱打的演员聚在一起,与每个男孩的武侠梦,能看到此处表演,也算是惊喜万分。 辛换了工作,换的很频繁,也不知道是没有遇到合适的团队,还是自己的原因,这个不得而知。想了想才刚工作的他,脾气那么不好,大家也都还是得惯着他,毕竟觉得他还小,转眼接近2年半的工作经验,也希望时间会教会他,与人相处,多站在别人的角度。最近H哥和M姐叫我帮忙推荐工作。自己联系了M厂和B厂的朋友, 详情 »

查看详情

hls.js 源码解读【1】

hls.js 是一款基于 Media Source Extensions 开发的,用于实现 HTTP Live Streaming 开源JavaScript类库。它可以实现将MPEG-2 和 AAC/MP3码流变成自制的 MP4的分片。并且可以直接绑定在Video 上,实现播放。 文章主要是通过解读源码,希望读者可以了解实现基本的前端 HLS 的主要流程,同事也可以扩展读者对 Media Source Extensions 和 video api 以及 视频编解码的相关知识有更进一部的了解。 第一篇文章可能会从整体方面,让大家理解一下调用的 整体流程,让大家对真个项目的基本代码架构有个基础的认识。 目录指南 只对和项目相关的文件进行说明 dist // 打包后的文件目录, src + cotroler - abr-controller.js // 用于分片筛选 - audio-stream-controller.js - audio-track-controller.js - buffer-controler.js 详情 »