速度の最適化の問題が発生しています。TideSDK を使用して、デスクトップ上の Web テクノロジでビデオ カット ツールを構築しています。ツールの 1 つには、位置スライダー付きのタイムラインがあります
基本的に、スライダーが動くたびに (jquery UI を使用して) 位置を取得し、これをタイムコードに変換し、FFMPEG にファイルにエンコードするように要求します。終了したイベントを取得すると、' viewer' をこのファイルに追加します。ファイルは一時フォルダーにあります。
問題は、少し遅すぎるということです。使用可能ですが、遅いです (ハイエンド コンピューターで約 2 fps) この戦略には 2 つのボトルネックがあると思います:
これは、各移動で実行されるコードです (var timecode は、ポインターの位置に基づいて計算されたタイムコードです)。
var cmd = [FFMPEG];
cmd.push('-y'); //overwrite existing files
cmd.push('-ss',timecode); //CUE position
cmd.push('-i',input); //input file
cmd.push('-f','image2'); //output format
cmd.push('-vframes','1'); //number of images to render
cmd.push(Ti.API.Application.getDataPath( )+"/encoderframe.jpg"); //output file
var makeframe = Ti.Process.createProcess(cmd);
makeframe.setOnReadLine(function(data){ /*console.log(data);*/ });
var time = new Date().getTime();
makeframe.setOnExit(function(){ ffmpegrunning = false; $('#videoframe').css('background-image','url(file://'+Ti.API.Application.getDataPath( ).replace(" ","%20")+'/encoderframe.jpg?'+time+')'); });
makeframe.launch();
基本的に、これは同じコマンドを繰り返し要求します。
ffmpeg -y -ss 00:00:01.04 -i /somepath/somevideo.mov -f image2 -vframes 1 /path/to/output/encoderframe204.jpg
このコードを最適化するにはどうすればよいですか。パイプを使用して Base64 データを使用して CSS バックグラウンドに直接出力するか、ロードされたメモリ ファイルを ffmpeg で再利用します。?
ありがとう!