从我的http://127.0.0.1 http服务器运行良好,并且通过“not”指定源标签中的mimi类型在上传到vistapanel.net主机时有效。有关代码的快照。html5视频在某些主机上不播放
<video id="vid" width="64" height="48" style="display:none">
<source src="images/queryzoom.webmvp8.webm" />
<source src="images/queryzoom.theora.ogv" />
</video>
<video id="vid2" width="64" height="48" style="display:none">
<source src="images/save.webmvp8.webm" />
<source src="images/save.theora.ogv" />
</video>
<canvas id="processCanvas" width="640" height="480" style="width:1px;height:1px" style="display:none">
</canvas>
...
function newFrame() {
frame++;
if (frame > 1000) {
frame = 0;
svideo.currentTime = 0;
jvideo.currentTime = 0;
}
...
if (frame == 200) {
jvideo.play();
}
...
if (frame > 200 && frame < 320) {
process.drawImage(jvideo, 0,0,640,480);
var TheImage = process.getImageData(0, 0, 640, 480);
var jpgdata = TheImage.data;
for (var i = 0, n = jpgdata.length; i < n; i += 4) {
if (jpgdata[i] < 80 && jpgdata[i+1] < 80 && jpgdata[i+2] > 128) {
jpgdata[i+3] = 0;
}
}
process.putImageData(TheImage, 0, 0);
gold = document.getElementById('processCanvas');
ctx.fillRect(width-400,0,400,200);
fwidth=300;
ctx.drawImage(gold, width-180-(fwidth/2),0,fwidth,200);
}
...
if (frame == 810) {
svideo.play();
}
...
if (frame > 800 && frame <1000) {
process.drawImage(svideo, 0,0,640,480);
if (frame <840) {
ctx.fillRect(width-400,0,(frame-800)*10,200);
var TheImage = process.getImageData(0, 0, 640, 480);
var jpgdata = TheImage.data;
for (var i = 0, n = jpgdata.length; i < n; i += 4) {
if (jpgdata[i] < 80 && jpgdata[i+1] < 80 && jpgdata[i+2] > 128) {
jpgdata[i+3] = 0;
}
}
process.putImageData(TheImage, 0, 0);
gold = document.getElementById('processCanvas');
progress = (frame-800)/40;
ctx.drawImage(gold, 0, 0, (640 * progress), 480, (width - 360), 0, (150 * progress), 100);
} else {
var TheImage = process.getImageData(0, 0, 640, 480);
var jpgdata = TheImage.data;
for (var i = 0, n = jpgdata.length; i < n; i += 4) {
if (jpgdata[i] < 80 && jpgdata[i+1] < 80 && jpgdata[i+2] > 128) {
jpgdata[i+3] = 0;
}
}
process.putImageData(TheImage, 0, 0);
gold = document.getElementById('processCanvas');
ctx.fillRect(width-400,0,400,200);
fwidth=300;
ctx.drawImage(gold, width-360,0,fwidth/2,100);
}
}
...
}
...
var frame=0;
var jvideo = document.getElementById("vid");
var svideo = document.getElementById("vid2");
var canvas = document.getElementById('processCanvas');
var process = canvas.getContext('2d');
newFrame();
它扮演的第一次,但未能在第2次打。我正在考虑需要重新加载和缺少主机上的支持以通过范围读取文件的问题。因此,将更改视频标签中的src,而不是通过将currentTime设置为零来重放 - 请注意,当currentTime未设置为视频播放时()不会在开始时启动它。
希望有人已经解决/解决了这个问题?
公测http://sdfreelance.vistapanel.net/beta.html