プログラム概要
このプログラムは、フルスクリーンまたはカスタムエリアでのスクリーンキャプチャをサポートし、システムオーディオの同時録音が可能です。リアルタイムプレビュー機能やパフォーマンスモニタリングも提供します。長時間の録画に伴うメモリ使用量の問題を解決するため、ストリーミング方式で直接ファイルに書き込みます。
主な機能
- 画面キャプチャ: 全画面および特定エリアの選択可能、フレームレート調整(1-60fps)、多様なビデオコーデック(mp4v、XVIDなど)
- オーディオ録音: システムオーディオの録音、複数のオーディオデバイス対応、オーディオデバイステスト機能
- 録画制御: 開始/一時停止/終了、リアルタイム状態表示、パフォーマンスモニタリング(実際のFPS、エラーカウント)
- ファイル管理: 保存パスの指定、自動ファイル命名、ディスクスペースチェック
- 高度な特性: 長時間録画最適化(自動セグメント)、エラーリカバリ機構、音声画像同期
技術詳細
def combine_audio_video(self):
vid_duration = self.calc_video_time(video_path)
aud_duration = self.calc_audio_time(audio_path)
if abs(vid_duration - aud_duration) > 0.5:
ratio = aud_duration / vid_duration
cmd = [
'ffmpeg', '-i', video_path, '-i', audio_path,
'-filter:v', f'setpts={ratio:.6f}*PTS',
'-c:v', 'libx264', '-c:a', 'aac', output_file
]
subprocess.run(cmd)
オーディオデバイス検出
def detect_audio_devices(self):
devices = sd.query_devices()
for idx, dev in enumerate(devices):
if 'virtual' in dev['name'].lower():
self.audio_dev_idx = idx
break
フレームレート制御
def record_screen_frame(self):
target_fps = int(self.frame_rate_var.get())
interval = 1.0 / target_fps
while self.is_recording:
start_time = time.time()
frame = self.capture_current_frame()
self.video_writer.write(frame)
elapsed_time = time.time() - start_time
sleep_duration = max(0, interval - elapsed_time)
if sleep_duration > 0:
time.sleep(sleep_duration)
依存ライブラリとインストール方法
以下のライブラリが必要です:
pip install opencv-python pip install Pillow pip install numpy pip install sounddevice pip install soundfile
FFmpegのインストール
FFmpegは、音声と映像の統合処理に必須です。以下のようにインストールしてください:
- 公式サイトからWindowsバージョンをダウンロード
- 解凍後、binフォルダのパスを環境変数PATHに追加
- コマンドプロンプトで`ffmpeg -version`を実行して確認