0

是否可以打开两个 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应该有一个值,表示两个视频文件之间所有像素的平均差异。正确的?

4

0 回答 0