javascript - 当源视频可见时,带有视频的画布drawImage全屏不起作用
问题描述
我目前正在通过在画布上绘制视频的某些部分来显示视频的某些部分,同时将视频的主要部分显示为视频标签。最近我遇到了一个奇怪的情况,画布部分在旧手机(galaxy 7)上进入全屏模式时停止绘制。它在最近的手机和 PC 上运行良好。
所以,我摆弄了一下,发现如果视频可见,drawImage 将停止以全屏模式绘制。
https://jsfiddle.net/2c8udb7j/1/
https://jsfiddle.net/2c8udb7j/2/
两者相同,只是第二个有 line video.style.display = "none"
。其他一切都是一样的。您可以通过单击“播放”按钮然后单击“全屏”按钮进行检查。
任何人都遇到过这个问题或知道它或有解决方案吗?
小提琴代码
html
<head>
<meta charset="UTF-8">
</head>
<body>
<script type="text/javascript" src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<script src="MultiviewCore.js"></script>
<button onclick='video.play();'>play</button>
<button onclick='video.pause();'>pause</button>
<button onclick='document.body.requestFullscreen();'>fullscreen</button>
<div id='container'></div>
</body>
脚本
var container = document.getElementById('container')
var myRange = document.getElementById('myRange')
var video = document.createElement('video')
video.setAttribute("playsinline", "")
video.src = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
var canvas = document.createElement('canvas')
var ctx = canvas.getContext('2d')
canvas.width = 512
canvas.height = 384
canvas.style.width = '512px'
canvas.style.height = '384px'
video.style.width = '512px'
video.style.height = '384px'
video.style.display = "none" // the only difference
function updateCanvas() {
ctx.drawImage(video,
0,
0,
video.videoWidth,
video.videoHeight,
0,
0,
canvas.width,
canvas.height);
window.requestAnimationFrame(updateCanvas)
}
document.body.appendChild(canvas)
document.body.appendChild(video)
updateCanvas()
编辑: 刚刚意识到我只用 chrome 测试这个。用galaxy 7的基本互联网浏览器试了一下,全屏drawImage效果很好。也许是铬或铬的问题?
解决方案
推荐阅读
- azure - ansible Zypper 模块中的 with_items 未调用库存文件变量
- java - URL 图片不使用增强现实 (AR) Android 播放视频
- javascript - 填写所有字段后禁用提交按钮(纯javascript)
- asciidoc - asciidoc 在句号“:”后删除缩进
- php - 如何在数据库查询中使用会话和数组来存储和显示数据
- python - 如何从所有可能的组合中获得所有可能的独特变体
- firebase - Firebase - 在 Cordova 中从 Direct Channel API 切换到 FCM HTTP v1 API
- python-3.x - Python Libcst:无法从访问者类中的节点生成代码
- android - “compileSdkVersion 未指定。请将其添加到 build.gradle ”,即使添加了 compileSdkVersion
- scala - Spark Scala数据框中的列拆分