jsPDFを使用してPDF出力ツールを作成していますが、それぞれがビデオフレームのキャンバスイメージを保持する複数のページを追加する必要があります。 最高の結果を得るために、操作をキューに入れてイベントを待つ方法を調整できないため、これを達成するための最善の方法については論理に固執しています。複数のビデオフレームを取得するキュー
video.currentTime
私はまた、次のようなビデオ秒の配列を持っている:
var vidSecs = [1,9,13,25,63];
私はvideoタグにロードされたビデオを持っているとして取得するか、その求めるポイントは単純に設定することができます開始するには 私はこの配列をループする必要があります、配列で定義された秒にビデオを探し、これらの秒でキャンバスを作成し、各キャンバスをPDFページに追加します。 次のように私はビデオフレーム機能からキャンバスを作成しています
function capture_frame(video_ctrl, width, height){
if(width == null){
width = video_ctrl.videoWidth;
}
if(height == null){
height = video_ctrl.videoHeight;
}
canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext('2d');
ctx.drawImage(video_ctrl, 0, 0, width, height);
return canvas;
}
この機能は、PDFに画像を追加するには、次のと連動して正常に動作します:
function addPdfImage(pdfObj, videoObj){
pdfObj.addPage();
pdfObj.text("Image at time point X:", 10, 20);
var vidImage = capture_frame(videoObj, null, null);
var dataURLWidth = 0;
var dataURLHeight = 0;
if(videoObj.videoWidth > pdfObj.internal.pageSize.width){
dataURLWidth = pdfObj.internal.pageSize.width;
dataURLHeight = (pdfObj.internal.pageSize.width/videoObj.videoWidth) * videoObj.videoHeight;
}else{
dataURLWidth = videoObj.videoWidth;
dataURLHeight = videoObj.videoHeight;
}
pdfObj.addImage(vidImage.toDataURL('image/jpg'), 'JPEG', 10, 50, dataURLWidth, dataURLHeight);
}
私のロジックの混乱が最善の方法でありますvidSecs
配列をループさせながらこれらのビットを呼び出すときは、を設定すると、フレームをキャプチャしてPDFに追加するコードを実行する前に、video.onseeked
イベントが発生するまでループする必要があります。
私は以下を試しましたが、ループが完了してからonseeked
イベントが発生してフレームキャプチャコードが呼び出される前に最後のイメージのみを取得しました。
for(var i = 0; i < vidSecs.length; i++){
video.currentTime = vidSecs[i];
video.onseeked = function() {
addPdfImage(jsPDF_Variable, video);
};
}
ご迷惑をおかけして申し訳ございません。
フォローアップMuazカーンは最も先進的なHTML5のビデオ処理の開発者の1になりそうです。直接彼に尋ねるhttp://www.muazkhan.com/ https://twitter.com/muazkh https://twitter.com/WebRTCWeb https://www.webrtc-experiment.com/RTCMultiConnection/RecordRTC-and-RTCMultiConnection .html https://stackoverflow.com/questions/41487635/thumbnails-from-a-video-with-javascript-html5?rq=1 –