iPhone 上的内嵌 html5 视频

2023-11-26

我想在 iPhone 上播放 HTML5 视频,但每当我尝试播放时,当调用视频“.play()”时,iPhone 都会自动弹出全屏。如何在 iPhone 不改变 UI 的情况下内嵌播放视频,如下所示:

http://www.easy-bits.com/iphone-inline-video-autostart

http://www.takeyourdose.com/en(当您点击“开始 360 度体验”时)

编辑:这是我的代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>iPhone Test</title>
        <meta charset="utf-8">
    </head>
    <body>
        <button onclick="document.getElementById('vid').play()">Start</button>

        <video id="vid">
            <source src="/videos/tutorial.mp4" type="video/mp4">
            Your browser does not support the video tag.
        </video>
    </body>
</html>

我正在研究这个问题的解决方案,直到苹果允许“webkit-playsinline”真正内联播放。

我在这里建立了一个图书馆:https://github.com/newshorts/InlineVideo

这很粗糙,但基本要点是你通过视频“寻找”而不是直接播放它。因此,不要调用:

video.play()

您可以使用请求动画帧或 setInterval 设置循环,然后设置:

video.currentTime = __FRAME_RATE__

所以整个事情在你的 html 中可能看起来像这样:

<video controls width="300">
  <source src="http://www.w3schools.com/html/mov_bbb.mp4">
</video>
<canvas></canvas>
<button>Play</button>

和你的js(确保包含jquery)

var video = $('video')[0];
var canvas = $('canvas')[0];
var ctx = canvas.getContext('2d');
var lastTime = Date.now();
var animationFrame;
var framesPerSecond = 25;
function loop() {
    var time = Date.now();
    var elapsed = (time - lastTime) / 1000;

    // render
    if(elapsed >= ((1000/framesPerSecond)/1000)) {
        video.currentTime = video.currentTime + elapsed;
        $(canvas).width(video.videoWidth);
        $(canvas).height(video.videoHeight);
        ctx.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
        lastTime = time;
    }

    // if we are at the end of the video stop
    var currentTime = (Math.round(parseFloat(video.currentTime)*10000)/10000);
    var duration = (Math.round(parseFloat(video.duration)*10000)/10000);
    if(currentTime >= duration) {
        console.log('currentTime: ' + currentTime + ' duration: ' + video.duration);
        return;
    }

    animationFrame = requestAnimationFrame(loop);
}

$('button').on('click', function() {
  video.load();
  loop();
});

http://codepen.io/newshorts/pen/yNxNKR

Apple 改变这一点的真正驱动力是最近发布的默认启用的 iOS 设备 webGL。基本上会有很多人希望使用视频纹理。从技术上来说,目前还无法做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone 上的内嵌 html5 视频 的相关文章

随机推荐

  • 通过XAML将Window.Content设置为页面?

  • 写入 Perl Moose 类中的只读属性

    使用 Perl 和Moose 可以通过两种方式访问 对象数据 self gt attribute or self gt attribute 这是一个简单的例子 展示了两者 Person pm package Person use stric
  • Rails / ActiveRecord - AdapterNotSpecified,即使它是

    我正在做Ruby on Rails 教程 前三章使用 SQLite 但后来建议使用 PostgreSQL 进行开发 以便更轻松地部署 Heroku 编辑我的后database yml and Gemfile使用 pg 而不是 sqlite3
  • 如何在 protobuf 3 中定义可选字段

    我需要在 protobuf proto3 语法 中指定带有可选字段的消息 就proto 2语法而言 我想要表达的信息是这样的 message Foo required int32 bar 1 optional int32 baz 2 根据我
  • Android:如何在继承Activity的类中使用onDraw方法?

    作为初学者 我一直在使用简单的布局 xml 和一个名为 Counter 的类构建一个简单的计数器应用程序 该类派生 扩展 自 Activity 类 现在 我想加载一个位图 png 文件 以放置在计数器旁边 我一直在阅读 onDraw 但它需
  • 指针是否也有任何地址或内存分配?

    如果指针存储变量的地址 那么我们从哪里获得指针呢 我问的是 如果我们直接使用指针 那么一定有一个位置可以从哪里获取这个指针 是的 声明的指针在内存中有自己的位置 在上面的示例中 您有一个变量 b 它存储值 17 int b 17 the v
  • C#:编组包含数组的结构

    我正在做一些 C 互操作工作 我有以下结构 pragma pack push 1 typedef struct unsigned int64 Handle LinkType t Type LinkState t State unsigned
  • 使用 LessCSS 用户定义函数?

    我最近刚刚接触 LessCSS 我遇到了我认为的主要限制 我想知道是否有办法做到这一点 我想说我在某处读到 Sass 允许用户定义函数 但 LessCSS 会做同样的事情吗 我想要做什么 fs 16 either return the va
  • 如何在 Elm 中提交表单?

    这是一个非常基本的问题 但我没有找到任何例子 我有这样的看法 view address model div div text lt ID toString model id form input value model title text
  • SES AWS 错误代码:SignatureDoesNotMatch,状态代码:403

    我在尝试通过 Amazon SES 发送邮件时收到 AWS 错误代码 SignatureDoesNotMatch 状态代码 403 我已确认我使用的是通过以下方式创建的正确凭据https console aws amazon com iam
  • 检查 GET 中是否传递了任何变量

    我已经做了一些搜索 但没有得出任何结果 我确信这是显而易见的 基本上 我试图弄清楚是否有任何内容通过 GET 从表单传递 我知道如何检查单个元素 但我只想快速检查是否有任何内容通过 Cheers 使用时要小心count GET 如果您提交包
  • 如何在ActionBar的导航选项卡中设置自定义View并使选项卡适应其高度?

    我正在使用ActionBar我想设置一个自定义View在导航选项卡中 选项卡的高度似乎是固定的 我的自定义View较大 所以不适合 我尝试自定义样式 如下所示 但它并没有使选项卡更高 如何让选项卡的高度适应我的自定义View size 我知
  • 压缩 xml 文件的 Subversion diff

    我正在使用 MySQL Workbench 来维护应用程序的数据库架构 这 mwbWorkbench 使用的文件是一个压缩的 XML 文档 保存在 Subversion 存储库中 该文件被 Subversion 视为二进制数据 因此我无法使
  • 有没有办法跟踪批处理文件的执行情况?

    我继承了一些大型批处理文件 我想将它们重写为更 开发人员友好 的语言 我想了解以下几点 它调用了什么其他脚本 它启动了哪些其他进程 它写入哪些文件 它使用哪些环境变量 设置哪些环境变量 对于最后一点 我知道在开始之前我可以这样做 set g
  • Opengls eglCreateWindowSurface GL 错误 EGL_BAD_ALLOC

    我正进入 状态eglCreateWindowSurface GL Error EGL BAD ALLOC在三星 Galaxy S6 中安装后首次打开应用程序时 相同的代码在其他设备中运行良好 我尝试清理内存并销毁纹理并在销毁时取消初始化所有
  • 无法在 64 位 Linux 上构建 32 位 Wine

    我正在尝试这样做 使用 automake 配置脚本在 64 位 Linux 上构建 32 位 对我不起作用 编译酒 我在 config log 中找到了这个 configure failed program was confdefs h d
  • 使用 Python 处理 MySQL 未读结果

    我使用 mysql connector 进行 SQL 操作 我有一个简短的脚本 它在光标上执行以下操作 字符串 cursor execute use format db show tables command ALTER TABLE Obj
  • 使用 Array.CreateInstance 和 new 运算符实例化数组的区别

    我可以看到以下两种在 C 中实例化 int 数组的方法 通过 API系统 数组抽象类 var arrayInstance Array CreateInstance typeof int 4 通过各种数组初始化语法 var arrayInst
  • PHP 中的自动图像格式检测

    我正在寻找一种方法来获取当前放置在临时位置的用户上传的图像 例如 tmp jkhjkh78 并从中创建 php 图像 自动检测格式 有没有比一堆尝试 捕获 jpeg 图像 png 图像等更聪明的方法来做到这一点 这是的功能之一获取图像大小
  • iPhone 上的内嵌 html5 视频

    我想在 iPhone 上播放 HTML5 视频 但每当我尝试播放时 当调用视频 play 时 iPhone 都会自动弹出全屏 如何在 iPhone 不改变 UI 的情况下内嵌播放视频 如下所示 http www easy bits com