動画再生位置の移動(シーク)方法を調べてみました。確認のため移動したフレームを画像として抽出してみました。
#!/usr/bin/env python3
import cv2
file = "H:\py\sample.mov"
vc = cv2.VideoCapture(file)
frame_cnt = int(vc.get(cv2.CAP_PROP_FRAME_COUNT)) # フレーム数
fps = int(vc.get(cv2.CAP_PROP_FPS)) # FPS
print("frames:{0},fps:{1}".format(frame_cnt, fps))
ret, img = vc.read()
if not ret:
quit() # 終了
cv2.imwrite("frame.png", img)
frame_pos = int(vc.get(cv2.CAP_PROP_POS_FRAMES))
print("frame_pos:{0}/{1}".format(frame_pos, frame_cnt))
# 500フレーム目に移動
vc.set(cv2.CAP_PROP_POS_FRAMES, 500)
frame_pos = int(vc.get(cv2.CAP_PROP_POS_FRAMES))
print("frame_pos:{0}/{1}".format(frame_pos, frame_cnt))
ret, img = vc.read()
if not ret:
quit() # 終了
cv2.imwrite("frame500.png", img)
vc.release()
コメント