AVI形式の動画をループ再生するだけのプレイヤー
将来的には拡張して実験に使いたいけどとりあえずは動画再生するだけものすごくシンプルなもの。
以前記事にしたUSBカメラで録画した内容を再生するというような時に使える。
USBカメラを動作させる記事はこちら。
calciummm.hatenablog.com
コードは以下。
"""
Simple AVI video player with OpenCV.
- Plays the specified file in a loop
- Press 'q' to quit
"""
import argparse
import sys
import cv2
def main():
parser = argparse.ArgumentParser(description="Simple AVI video player (loops, press 'q' to quit)")
parser.add_argument("video_path", help="Path to the AVI (or other supported) video file")
parser.add_argument("--window", default="AVI Player", help="Window name (default: AVI Player)")
args = parser.parse_args()
cap = cv2.VideoCapture(args.video_path)
if not cap.isOpened():
print(f"Error: failed to open video: {args.video_path}", file=sys.stderr)
sys.exit(1)
fps = cap.get(cv2.CAP_PROP_FPS)
if not fps or fps <= 1e-3:
fps = 30.0
delay_ms = max(1, int(round(1000.0 / fps)))
try:
while True:
ret, frame = cap.read()
if not ret:
cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
continue
cv2.imshow(args.window, frame)
key = cv2.waitKey(delay_ms) & 0xFF
if key == ord('q'):
break
finally:
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
以下では使い方と行ごとにどのような意味を持っているかを観ていく。
続きを読む