查看详情

VR 视频工作原理简介

最近在小组分享了关于沉浸式多媒体的体验和原理,这里也是简要分享我们如果做头显里的播放器,我们应该关注什么要的体验和如何实现等; 自己分享主要是从四个方面去讲: VR 历史简述 VR 视频播放体验 VR 视频播放原理 目前面临的一些挑战 Stanley G.Weinbaum 发布了科幻小说,《皮格马利翁的眼镜》, 这部小说给大家展现了一部神奇的眼镜,在眼镜里面可以看到万事万物,这也是想象的魅力,没人能够预言到未来会有人实现这样的眼镜; Morton Heilig 发明了人类历史上第一台 VR 设备;虽然看着捡漏,但是显示屏,影响,座椅,风扇,功能非常丰富,现在 4Dx 电影或许也参考了这一点;随后一段时间,他撰写专利,希望将这些都放到一个盒子里,而人们戴上这个盒子,便能实现他设计的诸多功能;这样的专利原型,也给后人制作头显设备留下重要的指引; 1968 年 Sutherland 和 Bob Sproull 发明了第一款头戴虚拟现实设备,它是里程碑的产品,它完成了跟随头部运动而更新画面的能力;但是受限于硬件限制,它需要额外的支持来拖住这个设备; 而到了90年代,诸多游戏公司入局,参与到VR头显设备的研发之中,这里面包括诸如 详情 »

查看详情

升级 Mac Os Ventrue Android 文件传输助手无法正常工作

最近连接自己的 Android 手机发现手机选项设置正确,但是一直无法传文件。但是 Adb 是连接正常的。 自己是一款小米 Mix1; Android 10,已经很久没有更新了;自己回想了唯一变化的是,就是我最近 Mac 升级到了 Mac Os Ventrue; 自己尝试重启手机,尝试重启电脑都不行;只能求助谷歌了;然后搜索到唯一一个有关联的变更;就是 allow accessory to connect | 允许配件连接; 你需要将这里设置为 Always。 然后重新连上手机就可以了,当然自己也不太确认这个能不能完全解决这样的问题;因为我谷歌的手机至今没有遇到这个问题; 详情 »

查看详情

小米 AX6000 解锁科学上网一些问题记录

目前自己总的来说是根据博客 https://github.com/kjfx/AX6000 和博主自己的视频 https://youtu.be/E1M3eU45S1k 来进行配置; 自己在这里实践的时候发现了一些问题,罗列分享下; 型号问题 看了网上主要是红米和小米 AX6000 的视频,而其实更多人是推荐小米 3600;当然这个读者可以自行选择; 原理科普 目前这些主要都是依赖于 OpenWrt 作为软路由来破解 ssh; 因此目前的教程,都是借助 OpenWrt 软路由;因此网上的视频,一种是子借助自己电脑作为热点来实现,另外一种就是借助拥有 OpenWrt 的路由器或者别的网络机器来实现;前面提到的博主是通过 Windows VMWare 做虚拟机。当然博主有 Mac 的话,也可以借助 Docker OpenWrt 自己在开启 ssh 权限接口遇到的问题 一个连接失败 network fail; 这里大概需要确认下你开启 OpenWrt 热点是否开启;Windows 有的时候会莫名的关掉热点, 详情 »

查看详情

聊聊前端裁员最近几个月的变化

总的来2022年的行情是非常的不如人意的。无论是应届生还是裁员找工作的。整体市场的需求非常的有限,而对市场人才的产出是有增不减的。 去年夏天开始陆陆续续看一些机会;时机不是很好,那个时候很多公司是已经在减员中,很多 HC 都没有释放出来。因此找工作的竞争激烈程度可想而知;自己身边也有很多人看机会,竞争表现在多方面的, 简历筛选通过概率比较低 面试周期较长 终面挂的概率提升 简历通过率 自己主要是在 Boss 上投递,心态也有很多变化。最开始觉得自己低估了整体的行情。首先就是简历在 Boss 通过后约面的就很少。而且自己处在一个特别的尴尬期,自己前几年一直做的前端,而最近的经历该做客户端 Android 相关的。但是这次准备找客户端和前端相融合的方向的机会却特别少。所以自己只能尝试前端单独方向和Android 中阶研发。 自己再计划里罗列了整体面试的公司数量,差不多投递了 103 家,面试了 15 家左右。这其中一面有三家没过,而到终面的有 5 加到了终面,最后只有三个 Offer. 面试周期 接下来想说的就是面试周期非常长,这里还出现了一些问题。因为不同公司面试周期不一样,而且今年普遍很长,会出现你预期公司的 offer 迟迟没法,而你之前优先级相对较低的Offer发的较早的情况。 自己之准备面试前, 详情 »

查看详情

ExoPlayer QoE 解读

对于很多初次尝试播放器的同学而言,在完成基本的开发的下一步,是需要对整个播放状况有个初步的认识,其中需要涉及到埋点设计和实现,因此这一块,对于新手而言是非常有难度的。 之前写过文章 基于 Android EXOPlayer 创建视频播放器 介绍过 ExoPlayer。它是谷歌开源的一款播放器,目前用于 YouTube 生产线,我推荐新手区学习它的原因,它整体包很小,里面有很多不错的实现帮助我们去理解播放最基本的事情。当然如果在生产线,还需要结合自己的实际情况取舍,可以参考 Ijkplayer、ExoPlayer、VLC播放器综合比较 的对比,再做实际选择,这里从 ExoPlayer 为基础,分析整个如何确保我们播放体验(QoE)文档。 接入 AnalyticsListener AnalyticsListener 是 Exoplayer 里面实现的一个接口,用于使用该播放器的开发同学方便的进行播放指标相关的统计。 class VideoQoEListener() : AnalyticsListener { override fun onRenderedFirstFrame(eventTime: AnalyticsListener.EventTime, surface: Surface?) { // Add Your Code to 详情 »

查看详情

Android WebView onPageFinished 对于 Document 意味着什么?

这是因为之前遇到一个线上问题引起的,这篇文章阅读的对象也比较适合 Android 和前端阅读。 我们说下 标题的 Document 对象,这个对 Android 开发者而言有些陌生,可以详见 MDN 里面的解释,简单的说就是它可以去代表我们要加载的这个网页对象。里面包含一些基本的信息和所谓生命周期。 Android WebView 提供了基于 WebViewClient 的页面周期的监听方法,常见的有: onPageStarted 当页面开始请求 onPageFinished 页面完成加载 onReceivedError 当加载出现错误的时候 更多方法可以详见 https://developer.android.com/reference/android/webkit/WebViewClient 在 JS 中,我们监听页面加载有两种常见的方法,一种是监听 window.onload 另外一个是 document 里的 readychange 来实现的。 其中 window.onload 定义是当页面完全加载时候触发,包括页面的上包含的图片和样式资源,脚本资源。 而 详情 »

查看详情

如何实现 Bilibili 视频播放Chrome 媒体控制效果

Chrome 最新的版本更新了媒体控制菜单的按钮 UI,也就是每次我们的网页产生声音或者视频时候,菜单栏头像附近,方便我们在多个 Tab 进行控制时候加的,方便我们操作这些网页 Tab 下面的音视频。 尤其最新的样式实现非常酷炫,加入对封面的支持,这样整体效果看着非常棒。 很早之前我们写过一篇关于 使用 mediaSession 实现媒体播放的通知栏控制 这里介绍了我们如何在网页播放音频的时候锁屏控件如何显示当前播放音乐的封面和简介,或者控制上一曲下去。 同意视频播放现在也可以,你只需要监听 MediaSession 的相关事件然后设置 mediaSession MetaData 的信息就好。 设置封面标题 if ('mediaSession' in navigator) { var data = mediaList[index] navigator.mediaSession.metadata = new MediaMetadata({ title: data.title, artist: data.director, artwork: [ { src: data.cover, sizes: '192x192' } ] }); } 进行播放控制 // $video has 详情 »

查看详情

IFrame 等开放服务存在的法律风险警示

目前很多视频服务商比如 Bilibili, 优酷, 腾讯等都支持基于 iFrame,将自己上传的视频或者别的作者的视频, 内嵌到自己的网站,从而提升内容或者宣传的质量。记得很早的时候火影忍者中文网就是嵌入的优酷的视频。 IFrame 不仅降低了接入成本,也降低了接入门槛,稍微懂点相关的知识就可以投放到自己的网站。但是这里实际上会存在一种安全警示。 我们知道腾讯视频除了(B站)是有前贴广告的,这么做是为了增加金主爸爸的品牌广告的曝光量。而基于 IFrame 的形式,很容易被一些广告主当做免费的视频托管平台,把自己的一些教程或者宣传该网站金主爸爸广告的视频嵌入到比较吸睛的内容上(赌博,色情等)。 不妨看下下面这张截图: 是不是很多人经常不慎点进去,为了方便大家使用,网站主可能会投一些教程视频,方便大家学习如何充值以及如何参与等。然而这里面的风险点,便是这样的网站对前贴曝光的品牌比如一些金主爸爸的(保洁,苹果,华为等),实际上是品牌影响的,就像很多人一看这个视频,会觉得是这些品牌在该网站的投放,从而进一步对该网站产生信任或者对该广告品牌产生质疑。 又或者在某些色情网站上,色情网站流量较大经常会嵌入一些游戏的广告链接导流,比如经常看到渣渣辉或者山鸡的传奇游戏广告,这些网站为了宣传游戏的吸引力会投入一些视频做宣传。因此这些色情网站也会嵌入到当前网站中。 然而风险点同样在于前贴广告的曝光,会非常影响这些广告主品牌效应,你想想你在浏览 xxx 网站,刚好你是某品牌的员工,看到自家的广告在这样的网站上播放,可能内心一种无奈在心头,又或者更多问号在头上? 所以我们在做任何开放服务尤其基于 iFrame 做好对 详情 »

查看详情

Swift 和 Kotlin 获取代码执行行数和文件名

如果我们需要需要实现一个类似打印当前函数调用的文件名和函数的化,我们需要借助一些类库。 在 swift 中我们可以借助 #file 和 #line 来实现数据获取/。 类似 public static func log(file: String = #file, line: Int = #line) { } 而在 Android 我们需要借助 Thread 来实现 var str = "" try { val filename = Thread.currentThread().stackTrace[your_trace_index].fileName val line = Thread.currentThread().stackTrace[your_trace_index].lineNumber str = " $filename [l$line]" } catch (err: 详情 »

查看详情

VR 中 Monoscopic 和 Stereoscopic 的区别

无论是 VR 拍摄还是 VR 开发中,我们都会遇到这个问题,关于Mono(monoscopic) 和 Stereo(stereoscopic) 的选择。这里简单给大家科普下 在 AR/VR 显示技术原理 (上) 中,曾经涉及到,双眼和单眼成像的区别。而 Monoscopic 和 Stereoscopic 的区别就和这个相关。 Monoscopic (简称 mono) 实际上来源一个镜头的采集,通过本身角度的变化,类似于从0-360 这样来进行连续采集,而这样的图片在还原的时候,有个特点,就是周围距离自己的距离是一致的,比如最近自如VR 的单摄像头拍摄就是这个原理。 Stereoscopic(简称 stereo ) 实际上是双摄像头进行采集。我们知道人体双眼对距离的感知是很明显,所以这种方式采集对物体的距离感非常明显,这也是专业 VR 摄像所采用的设备。比如 Insta360 Pro2 我们可以看到它的镜头分布。 而它由于是多摄像头拍摄,因此平面视频会是不同的风格, 由于这是模拟人眼的方式,因此人类在感知还原的时候对于深度和距离非常准确,VR 详情 »