3

我遇到了速度优化问题。我正在使用 TideSDK 在桌面上使用 Web 技术构建视频剪辑工具。工具中有一个带有位置滑块的时间线

基本上,每当滑块移动时(使用 jquery UI),我得到位置,将其转​​换为时间码并要求 FFMPEG 编码到文件,当获得完成的事件时,我只需更新'的背景图像属性查看器'到这个文件。该文件位于某个临时文件夹中。

问题是,它有点太慢了。可用,但速度慢(在高端计算机上大约 2 fps)我认为这个策略有 2 个瓶颈: - 将 ffmpeg 输出写入文件并在 css 中读回 - 在 ffmpeg 中重复加载相同的电影文件

这是每次移动时执行的代码(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 中重用加载的内存文件。?

谢谢!

4

0 回答 0