概要
- Pythonで オーディオ・ビデオ・ウェブカメラ を制御する方法の解説
- VLC Media Player などのマルチメディアプレイヤーとファイル形式の基礎知識
- OpenCV・sounddevice・wavio などのPythonライブラリの利用法
- ウェブカメラ写真撮影・録音・動画再生 の自動化サンプルコード
- アスペクト比・解像度 など動画の基本的な概念も説明
Pythonでオーディオ・ビデオ・ウェブカメラを操作する
- スマートフォン は携帯型フィルムスタジオとして機能
- 動画・音声編集ソフトは多種多様だが、 大量処理や自動化 にはPythonが有効
- 例: 1000本の動画ファイルの音量を自動で半減し、サムネイル画像を抽出
- ウェブカメラやマイク からの録画・録音の自動化も可能
- 特定イベントで自動撮影・タイムラプス・写真編集・QRコード読み取り など応用範囲が広い
マルチメディアファイルとVLC Media Player
- VLC Media Player は無料かつ高機能なマルチメディア再生ソフト
- Windows/macOS/Linux/Android/iOSに対応
- ファイル拡張子 だけでなく、 コンテナ形式(MP4, AVI, MKV, MOV)とコーデック(MP3, H.264, AAC等) の理解が重要
- 音声ファイル例: .wav(非圧縮・高音質・大容量)/.mp3(圧縮・音楽向け)/.ogg(オープン規格・高圧縮)
- 動画ファイル例: .avi(古い・大容量)/.mp4(汎用性高・広く対応)/.mkv(機能豊富・やや限定的)/.webm(新しい・高圧縮)
動画サイズ・アスペクト比の基礎
- アスペクト比 :幅と高さの比率(例:4:3, 16:9, 19.5:9)
- ランドスケープ(横長)/ポートレート(縦長) の区別
- 画面解像度 :ピクセル数(例:1280x720、1920x1080)
- 動画は一般的な解像度に合わせて作成され、 フルスクリーン表示 などに適合
Pythonでウェブカメラ・マイクを利用する準備
- OpenCV :画像処理用オープンソースライブラリ
- 事前に NumPy インストール必須(pip install numpy または sudo apt install python3-numpy)
- OpenCV自体は pip install opencv-python で導入
- sounddevice・wavio :音声入出力用Pythonパッケージ(pip install sounddevice, pip install wavio)
- Pygame :2Dゲーム用だがマルチメディア機能もあり(pip install pygame)
ウェブカメラ画像の撮影サンプル
-
OpenCVでのカメラ制御
- 複数カメラがある場合、 インデックス(0, 1, 2...) で指定
- サンプルコードで 接続可能なカメラ一覧を取得 し、最初のカメラでプレビュー画面を表示
- スペースキーで写真保存、Escキーで終了 できるインターフェース
import cv2 def list_webcam_indexes(): detected_webcam_indexes = [] for i in range(10): webcam = cv2.VideoCapture(i) status, frame = webcam.read() if status: detected_webcam_indexes.append(i) webcam.release() return detected_webcam_indexes first_available_index = list_webcam_indexes()[0] webcam = cv2.VideoCapture(first_available_index) print('index:', first_available_index) print('width:', webcam.get(cv2.CAP_PROP_FRAME_WIDTH)) print('height:', webcam.get(cv2.CAP_PROP_FRAME_HEIGHT)) print('fps:', webcam.get(cv2.CAP_PROP_FPS)) while True: success, frame = webcam.read() if not success: print('Could not capture frame.') break cv2.imshow('Press space to save photo or Esc to exit', frame) pressed_key_code = cv2.waitKey(1) if pressed_key_code == 32: cv2.imwrite("photo.png", frame) break elif pressed_key_code == 27: break webcam.release() cv2.destroyAllWindows() -
プレビューなしで即撮影 したい場合はさらに簡単なコード
import cv2, sys camera = cv2.VideoCapture(0) success, frame = camera.read() if not success: sys.exit('Invalid webcam index.') cv2.imwrite('photo.png', frame)
Pygameを使ったウェブカメラ撮影
-
pygame.cameraモジュール でカメラ一覧取得・初期化・撮影・保存まで可能
-
接続カメラ名はリストで取得(例:['HD Pro Webcam C920', 'Integrated Camera'])
-
サンプルコード
import pygame.camera, pygame.image, time pygame.camera.init() all_webcams = pygame.camera.list_cameras() webcam = pygame.camera.Camera(all_webcams[0]) webcam.start() time.sleep(1) photo = webcam.get_image() pygame.image.save(photo, "photo.png") pygame.camera.quit()
キーコードの調べ方
- キーイベント処理には ord()関数 で文字キーのコードを取得
- 例:
ord('q')は113(Qキーのコード)
- 例:
この章では、 Pythonでのマルチメディア自動化 の基礎から具体的なコード例まで、実践的なノウハウを網羅。 OpenCVやPygame を使ったカメラ制御の自動化や、 VLC Media Player によるファイル再生の基礎知識を習得可能。