ビデオ フレームを画像ファイルにコピーするには、ビデオを適切にロードし、画像をキャンバスにコピーしてファイルにエクスポートする必要があります。これは十分に可能ですが、問題が発生する可能性がある場所がいくつかあるため、一度に 1 つずつ実行してみましょう。
1) 動画の読み込み
ピクセルをキャプチャするには、またはまたは<video>
ではなく、タグにビデオをロードする必要があります。また、ファイルは、Web ページ自体が存在する Web サーバーから取得する必要があります (クロスオリジン ヘッダーを使用しない限り、これは複雑で、ブラウザーで機能しない可能性があります。これは、セキュリティのためにブラウザーによって制限されています)。あなたのコードはローカル ファイル システムからビデオをロードしますが、これは機能しません。iframe
object
embed
また、適切なファイル形式をロードする必要があります。IE9+ は WMV を再生する可能性がありますが、他のブラウザーで再生できる可能性はほとんどありません。可能であれば、webm、mp4、理想的には ogg/theora を使用して、複数のソースをロードします。
var container = document.getElementById("myVid"),
video = document.createElement('video'),
canCapture = true;
if (!video.canPlayType('video/wmv')) {
/* If you don't have multiple sources, you can load up a Flash fallback here
(like jPlayer), but you won't be able to capture frames */
canCapture = false;
return;
}
video.src = 'myvideo.wmv';
container.appendChild(video);
video.play(); //or put this in a button click handler if you want your own controls
2) 次に、キャンバスと描画コンテキストを作成します。実際には DOM にアタッチする必要さえありませんが、結果の画像を保存するサイズに設定する必要があります。この例では、固定サイズを念頭に置いていると仮定しますが、必要に応じてビデオ サイズの倍数に設定できます。ビデオのサイズはすぐには利用できないため、ビデオの「loadedmetadata」イベント内で必ず実行してください。
var canvas = document.createElement('canvas');
canvas.width = 640;
canvas.height = 480;
var ctx = canvas.getContext('2d');
// if you want to preview the captured image,
// attach the canvas to the DOM somewhere you can see it.
3) 画像をキャンバスにキャプチャし、ファイルに保存します。このコードをonclick
ボタンのイベントまたはタイマー内に配置します。ただし、画像がキャプチャされるタイミングを決定する必要があります。drawImage メソッドを使用します。([この記事] は、セキュリティ上の問題を含め、適切な説明を提供します。これは、ビデオと画像の場合と同じです。)
//draw image to canvas. scale to target dimensions
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
//convert to desired file format
var dataURI = canvas.toDataURL('image/jpeg'); // can also use 'image/png'
4) 画像ファイルのエクスポート
jpg ファイルはData URIとして保存されます。これは、完全なバイナリ ファイルのエンコードされたバージョンを表す長い JavaScript 文字列です。それをどうするかはあなた次第です。img
src: に設定するだけで、要素に直接配置できますmyImage.src = dataUri;
。
ファイルに保存したい場合は、サーバーにアップロードする必要があります。これを行う方法に関する優れたチュートリアルを次に示します。
いつものように、上記のすべては、それをサポートするブラウザーに制限されています。wmv ビデオに固執する場合は、ほとんど Internet Explorer 9+ に限定されます。6-8 は video タグも canvas もサポートしていません。さらにビデオ形式を追加できる場合は、Firefox (3.5+) と Chrome を使用できます。