查看详情

iOS WebView 对 H5 视频播放的控制

各大厂商在媒体播放这块一般管控都比较严格,所以经常会出现一些非常规的行为,比如 iOS 唤出全屏,比如自动播放,比如画中画(PiP) 无法唤起等问题。 在 iOS 中,我们各个 App 引入的 Webview 容器都是官方推荐的 WKWebView ,我们需要它来加载我们的网页,从而完成部分功能。但是处于安全隐私的考虑,它默认的一些属性是并不开启的。其中我们比较关注的视频播放有这么几项: applicationNameForUserAgent 用于设置 WebView user agent allowsInlineMediaPlayback 是使用h5的视频播放器在线播放, 还是使用原生播放器全屏播放 mediaTypesRequiringUserActionForPlayback 允许哪些媒体格式需要用户手动触发播放 allowsAirPlayForMediaPlayback 是否允许 Apple 的 Airplay allowsPictureInPictureMediaPlayback 是否允许 画中画模式(PiP) 在 Swift 中,我们可以简单的初始化一个 webview struct WebView: UIViewRepresentable { let request: URLRequest var config = WKWebViewConfiguration( 详情 »

查看详情

Vue-core-video-player support HLS format now

As is known to us. HLS is an important video format for all big video service platform for Apple, Netflix and Tencent Video Entertainment. HLS is a media streaming protocol for delivering visual and audio media to viewers over the internet. HLS protocol chops up MP4 video content into short (10-second) chunks with the .ts file 详情 »

查看详情

《转》着色器语言 GLSL (opengl-shader-language)入门大全

基本类型 void 空类型,即不返回任何值 bool 布尔类型 true,false int 带符号的整数 signed integer float 带符号的浮点数 floating scalar vec2, vec3, vec4 n维浮点数向量 n-component floating point vector bvec2, bvec3, bvec4 n维布尔向量 Boolean vector ivec2, ivec3, ivec4 n维整数向量 signed integer vector mat2, mat3, mat4 2x2, 3x3, 4x4 浮点数矩阵 float matrix sampler2D 2D纹理 a 2D texture samplerCube 盒纹理 cube mapped texture 详情 »

查看详情

使用 chrome://media-internals 更好的进行音视频 Debug

随着短视频和在线教育办公的兴起,我们非常倚重浏览器的音视频项目开发。 Chrome 提供了一款非常好的内部状态栏,帮助我们去了解当前音视频的编码,buffer 状态等信息。 我们可以随机打开两个在线视频播放网站比如: https://www.bilibili.com/bangumi/play/ep313573 https://v.youku.com/v_show/id_XMzQ2OTk2Mjky.html 然后我们可以在浏览器新建 tab 输入 chrome://media-internals/ 我们可以看到四个 tab Players 当前播放视频的日志信息 Audio 当前音频的播放日志信息 Video Capture 当前摄像头的状况 Audio Focus 当前音频播放的 Session 其中我们主要关心前两个 Tab。 在 Players 我们是一个看到一个历史纪录,我们可以根据视频的 CDN 源找到当前正在播放的视频。然后点击,最底部我们可以在最底部看到两栏,Player Properties 和 Log。 详情 »

查看详情

聊聊 Web 视频播放的画中画模式

Chrome 在升级到 70 的时候开始对视频播放的画中画模式开始支持了,用户在浏览器 Web 页面可以通过 画中画的形式强当前画面停留在屏幕正上方,无论你在使用其他软件还是切到其他 Tab ,都可以看到当前画面。 最新的 caniuse 我们可以看到已经覆盖了很多了浏览器版本,包括 最新的 Safari 甚至移动 Android 的 Chrome 浏览器。 特征检测 我们可以通过 video 元素上的 requestPictureInPicture 的方法以及 document.pictureInPictureElement 来判断浏览器是否支持画中画模式。 if ('pictureInPictureEnabled' in document) { // do something } else { // not support } if (typeof videoEl.requestPictureInPicture === 'function') { // do something } else { // not support } API 调用 我们可以通过调用 requestPictureInPicture 来实现画中画播放模式。 someBtn. 详情 »

查看详情

【译】Web 视频播放前前后后

这应该是目前写的最为完整的关于 Web 视频播放的文章。从简单的 Video 元素到 MSE 直播的应用,作者给出了具体的代码,文章由浅入深,普及现代 Web 播放技术的前前后后。五星推荐阅读。 @Paul Berberian 原文地址: https://medium.com/canal-tech/how-video-streaming-works-on-the-web-an-introduction-7919739f7e1 注意:本文是JavaScript视频流的介绍,主要针对Web开发人员。这里的大部分示例都使用HTML和现代JavaScript(ES6)。如果您对它们还不够熟悉,那么您可能会发现很难继续学习,尤其是代码示例。 原生视频 API 从2000年代初期到后期,网络上的视频播放主要依靠Flash插件。 ** 警告用户安装Flash插件 ** 这是因为当时没有其他方法可以在浏览器上流式传输视频。作为用户,您可以选择安装Flash或Silverlight之类的第三方插件,还是根本无法播放任何视频。 为了填补这个空白,WHATWG 开始研究 HTML 标准的新版本,其中包括本地的视频和音频播放。苹果公司在其产品上禁用 Flash 后,这一趋势更加明显。而该标准后面成为现在的 HTML5 的标准。 因此,HTML5除其他新的标签外,将 < 详情 »

查看详情

Web 播放 AV1 概述

前言 AV1 是 Google 协同 Netflix, Amazon, Huawei等知名公司所建 AOMedia 联盟推出的一款开放,免费的视频编码格式。而它的直接竞争对手便是目前也非常火热的 HEVC。本文将详细介绍 AV1 的由来和特点,以及如何转码和播放。 发展历史 音视频编解码发展已经有三十余年时间,其实发展的方向也就是两条: 更好的压缩率 更多的播放场景 很早以前我们只能在电视或者 DVD 上看,而现在我们更多的在移动设备或者浏览器上看视频。众所周知,H.264 目前依旧是现在非常主流的编解码方式,它由运动图像专家组开发发布,然而从最早1999年到现在,播放的形式已经千变万化,比如 HDR, 8K ,360° 视频等。为了满足当前的形式发展,H.265 诞生了,在视频压缩上更进一步。然而,不好的事 H.265 需要支付昂贵的专利费用,这是很多厂商无法接受的。 因此一些公司开始尝试别的视频格式,其中 Google VP9, 它是谷歌内部用来代替 H.264 详情 »

查看详情

【译】VMAF 视频质量评估工具概述

原文地址: https://medium.com/netflix-techblog/vmaf-the-journey-continues-44b51ee9ed12 本文是 Netflix 关于自家的 VMAF(Video Multi-method Assessment Fusion) 的介绍,它可以很好的去评估一个视频的质量通过借助人类视觉模型以及机器学习,它目前已经开源,并且集成在诸如 ffmpeg 这些第三方工具上。 by Zhi Li, Christos Bampis, Julie Novak, Anne Aaron, Kyle Swanson, Anush Moorthy and Jan De Cock Netlfix 是如何评估一个视频的质量的? 哪种视频的编码方式更好? Codec A 或者 Codec B? 对于这个剧集,1000 kbps 是否比 HD 分辨率更好,或者 SD(标清) 更好? 当我在从事提升 详情 »

查看详情

QUIC 对视频播放的影响

Google/QUIC, Quick UDP Internet Connections 是一种实验性的网络传输协议,位于OSI模型的传输层。由Google开发,在2013年实现。QUIC使用UDP协议,它在两个端点间创建连线,且支持多路复用连线。 现代 TCP 是在 RFC 793 中定义的,进过数十年的的实验,实践出来。它在 1981 年发布。HTTP Working Group 在2013开始关注 HTTP/2 的工作,他们聚焦到如何优化 HTTP 在 TCP 的使用上。他们尽可能的消除队头阻塞, 提升对连接的利用。HTTP/2 支持了多路复用,从而高效的利用 TCP 连接。但是 队头阻塞的问题并没有完全解决,因为包传输是有序的,于是 QUIC 为了克服这个问题,将 数据流层移至传输层,它在 UDP 之上构建了一个类似 TCP 详情 »

查看详情

【译】AR/VR 显示技术原理 (上)

原文地址: https://medium.com/hackernoon/fundamentals-of-display-technologies-for-augmented-and-virtual-reality-c88e4b9b0895 @Kore 随着 Google Glass 和 HTC Vive 给大家带来了对于增强现实和虚拟现实的体验,头戴设备正在成为新型趋势。核心的是对于 头戴设备屏幕 (head-mounted displays,HMDs),它包含两个基本的元素: 光学元件和 图形显示。 光学 在了解光学基础之前,我们需要先弄懂人眼的基本属性。 视场 FOV (Field of View) 它主要表示人眼所能看到的图像最大角度范围。一般人的话,我们水平方向双眼是 200 度,会有 120 度的重叠。双眼重叠部分对于人眼构建立体和景深非常重要,这个我们会在后面讲到,而垂直视角大约为 130 度。 瞳间距 IPD (Inter-pupillary distance) 这个比较好懂,就是人眼瞳孔的距离,它在双目视觉系统有着重要的影响。瞳距在不同的人之间,性别之间以及人种之间都不一样。错误的瞳距计算会影响眼镜的对齐,图形失真,视觉疲劳以及头晕。 详情 »