ビデオ ファイルの base64 がある場合、ビデオ全体を再生したり、ビデオをサーバーに送り返したりすることなく、javascript ですべてのフレームを取得する方法はありますか?
ビデオを取り、それを ascii-art に変換して再生する Web ページに取り組んでいます。最初は、ビデオをサーバーにアップロードし、そこでデコードして変換し、変換されたビデオで応答するのが最善の方法だと思いました。ただし、出力「ビデオ」(実際にはテキストの巨大な塊) を圧縮していないため、応答が膨大になり、転送に長い時間がかかります。
フロントエンドでビデオを解析すれば、次のようなことができることはわかっています (このコードに何かが欠けているかどうかはわかりませんが、一般的な考え方を伝えています)。
var frames = [];
var context = document.getElementById('canvas').getContext('2d');
var video = document.createElement('video');
video.src = base64Value;
function callback() {
context.drawImage(video, 0, 0);
frames.push(grabFrameFromCanvasContext(context));
if (video.currentTime < video.duration) {
setTimeout(callback, 50);
}
}
callWhenVideoStartsPlaying(callback);
ただし、ビデオの解析には時間がかかります。ブラウザはどこかからビデオをストリーミングするため、これはほとんどの場合に理にかなっていますが、ビデオのソースがbase64であるため、これを行うより良い方法はありますか?