我正在尝试将 x264 编码的视频文件中的各个帧捕获到png
文件中(在python
),然后比较它们的质量:
cap = cv2.VideoCapture(filename);
//get frame_number for saving, and save the frame
cap.set(cv2.CAP_PROP_POS_FRAMES,frame_no);
ret, frame = cap.read()
cv2.imwrite(dir_path+'uniform_frame_'+str(frame_no)+".png", frame);
现在我想知道我是否可以获取一个I 帧,是否意味着它比其他帧质量更高,例如P 帧和B 帧?(本质上,关键帧未被压缩,因此它们必须具有更高的质量和更少的噪音)。
答案1
编码视频流中的所有帧都经过压缩;I 帧只是表示无需参考其他编码图片即可重建图片。
现在,由于 I 帧通常用作其他图片的参考,因此智能编码器在量化方面会比较轻松,因此它们通常质量更高。P 帧应用了更多的量化,B 帧则更多。