我正在使用 Affectiva 的 Emotion SDK for Javascript 来播放和分析视频文件。目前,我正在按照他们的“分析视频帧流”教程将视频作为流播放并捕捉情感特征。但是,我想批量处理视频文件,而不是对视频的整个持续时间进行分析。
提高视频的播放速率有助于加快这一进程。我也尝试通过在视频中向前搜索来跳过帧,但表现令人失望。有谁知道处理不受视频播放速率瓶颈限制的视频文件的方法?
我正在使用 Affectiva 的 Emotion SDK for Javascript 来播放和分析视频文件。目前,我正在按照他们的“分析视频帧流”教程将视频作为流播放并捕捉情感特征。但是,我想批量处理视频文件,而不是对视频的整个持续时间进行分析。
提高视频的播放速率有助于加快这一进程。我也尝试通过在视频中向前搜索来跳过帧,但表现令人失望。有谁知道处理不受视频播放速率瓶颈限制的视频文件的方法?
通过使用具有较低 fps 的搜索,我能够解决这个问题(尽管可能不是很有效)。本质上,在检测器的“onImageResultsSuccess”函数中,我调用了函数 nextFrame,它在视频中向前跳过了我用变量 fps 设置的量。它调用视频元素上的“搜索”事件,然后可以调用 captureImage 函数,该函数触发检测器创建一个循环,该循环一直运行,直到分析整个视频。下面是部分代码以及 jsfiddle 实现。
var nextFrame = function() {
// when frame is captured, increase
vidTimeStamp = vidTimeStamp + (1 / fps);
// if we are not passed end, seek to next interval
if (vidTimeStamp <= video.duration) {
// this will trigger another seeked event
message_text.innerHTML = ((vidTimeStamp / video.duration) * 100).toFixed(2) + "% completed";
video.currentTime = vidTimeStamp;
} else {
// DONE!, next action
message_text.innerHTML = "100% Completed";
alert("Video Processed");
download_btn.click();
}
};
video.addEventListener("seeked", function(e) {
// now video has seeked and current frames will show
// at the time as we expect
captureImage(vidTimeStamp);
});