是否可以打开两个 VLC 媒体播放器实例,一个显示源视频文件,另一个显示编码的手刹结果。然后从每个玩家那里提取帧,遍历每个像素值,求和绝对差,最终除以帧高乘以宽度的总和?
就像是
v1 = new VLC("filename1.mkv");
v2 = new VLC("filename2.mkv");
long long F = 0;
double S = 0;
/* initialize the media players here to begin getting frames */
while (v1.HasNextFrame() && v2.HasNextFrame()) {
img1 = v1.getFrame();
img2 = v2.getFrame();
int H = img2.getHeight();
int W = img2.getWidth();
int D = 0;
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
D += Math.Abs(img1[i][j].pixelValue - img2[i][j].pixelValue);
}
}
if (S == 0) {
S = (D / (H * W) );
} else {
S = (S + (D / (H * W) ) / 2);
}
v1.getNextFrame();
v2.getNextFrame();
F++;
}
最终S
应该有一个值,表示两个视频文件之间所有像素的平均差异。正确的?