首页 文章

Ionic 3 - 内联视频在iOS 10上的原生播放器中以全屏模式打开

提问于
浏览
11

我正试图在离子3移动应用程序中内嵌视频 - 我想避免启动原生视频播放器 .

我正在测试iPhone 5s - iOS 10 .

这是我根据我读过的所有内容创建的用于加载视频的功能:

loadVideo(src: string, onComplete?: (src: string) => void): void {
    var video: HTMLVideoElement = document.createElement('video');

    video.setAttribute('playsinline', '');
    video.setAttribute('webkit-playsinline', '');
    video.setAttribute('src', src);

    var onVideoLoaded = () => {
        video.removeEventListener('loadeddata', onVideoLoaded);

        if (onComplete != null) onComplete(src);
    };

    video.addEventListener('loadeddata', onVideoLoaded);

    video.load();
}

加载完成后,我通过video.play()播放它 .

该功能的另一个版本是:

loadVideo(src: string, onComplete?: (src: string) => void): void {
    var video: HTMLVideoElement = document.createElement('video');

    video.setAttribute('playsinline', '');
    video.setAttribute('webkit-playsinline', '');

    var srcElement: HTMLSourceElement = document.createElement('source');

    srcElement.setAttribute('src', src);
    srcElement.setAttribute('type', 'video/mp4');

    var onVideoLoaded = () => {
        video.removeEventListener('loadeddata', onVideoLoaded);

        if (onComplete != null) onComplete(src);
    };

    video.addEventListener('loadeddata', onVideoLoaded);

    video.appendChild(srcElement);
    video.load();
}

它使用source元素而不是video元素中的source属性 .

我还尝试直接在HTML中编写视频标签,以防Angular有一些代码来处理这个问题:

<video playsinline webkit-playsinline autoplay muted">
    <source src="test.mp4" type="video/mp4">
</video>

由于自动播放不支持未静音的视频,我尝试通过HTML添加静音属性 . 当通过JavaScript添加它时,将其添加为属性似乎没有效果,而是我正在编写video.muted = true .

我尝试的另一件事是通过用户交互播放静音视频而不是自动播放它:

window.addEventListener('pointerdown', () => video.play());

我也尝试使用这个polyfill,它应该在iOS 8和9上模仿iOS 10的playinline:

enableInlineVideo(video, false);

https://github.com/bfred-it/iphone-inline-video

我尝试过的所有内容都会产生相同的结果 - 在iOS上,视频在原生播放器中全屏播放,即使它应该在线播放,而在Android上它按预期内联播放 .

1 回答

  • 25

    您是否在 config.xml 中尝试了以下内容?

    <preference name="AllowInlineMediaPlayback" value="true" />
    

    哪个触发Native应用程序在Inline中播放 . 来到HTML5时,有一个有趣的事实在Apple Developer Site中说明

    在iPhone和iPod touch上,这是小屏幕设备,“视频不在网页中显示”

相关问题