HTML5 を使用して、モバイル デバイスで背景が透明なビデオを再生する必要があります。Windows Phone では、ビデオ タグの現在のフレームをキャプチャして、キャンバスに表示できます。しかし、それは Android および iOS デバイスでは機能しません (セキュリティ上の理由からだと思いますか?)。
私の解決策は、FFMPEG を使用して .flv を分割し、それらのフレームをつなぎ合わせてスプライト シートのような大きな画像にすることでした。
問題は、新しいフレーム シートに切り替えると、アニメーションが「ハング」することです。これを視覚的に確認しただけで、コンソールを介して (現在のスプライト シートの行を変更したときにログを記録することによって)、スプライト シートを変更したときにハングする方法と、同じシートを何度もループするだけです。
事前にすべての画像を事前にロードします。
var frameImages = [];
for(var i = 0; i < 35; i++)
{
frameImages.push(new Image());
frameImages[i].src = 'frame' + i + '.png';
console.log(frameImages[i].src);
frameImages[i].onload = function()
{
// Notify us that it's been loaded.
console.log("Image loaded");
}
}
そして、次のように再生します。
processFrame = function()
{
outputCanvas.width = outputCanvas.width;
output.drawImage(frameImages[currentFrame], (curCol*153), (curRow*448), 153, 448, 0, 0, 153, 448);
curCol += 1;
if(curCol >= maxCol)
{
curCol = 0;
curRow += 1;
if(curRow >= maxRow)
{
curRow = 0;
currentFrame++;
}
}
}
}
var mozstart = window.mozAnimationStartTime;
step = function(timestamp) {
var diff = (new Date().getTime() - start) - time;
if(diff >= frameDelay)
{
processFrame();
time += frameDelay;
}
}
Win 7マシンとChromeを搭載したNexus 7のChrome v 23.0.1271.97 mでこれを試しました。
http://savedbythecode.com/spokes/mozanimation.php - これは mozAnimationStartTime と http://savedbythecode.com/spokes/newplayer.php を使用してい
ます-これは各ステップで調整される通常の JS タイマーを使用しています( http://www.sitepoint.com/creating-accurate-timers-in-javascript/から)
何か案は?問題は十分に明確でしたか?
ありがとう、ケビン