注釈
こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32に関心のある仲間たちとともに、さらに深く学びましょう。
参加する理由
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートで解決できます。
学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
特別なプレビュー: 新製品の発表や先行公開に早期アクセスできます。
特別割引: 新製品に対して限定割引を楽しめます。
祝祭プロモーションとプレゼント: プレゼントや祝祭プロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
ビデオ録画
この例では、録画機能の使い方を紹介します。
コードの実行
cd ~/picrawler/examples
sudo python3 record_video.py
コードが実行された後、ブラウザに http://<your IP>:9000/mjpg と入力すると、ビデオ画面が表示されます。例: http://192.168.18.113:9000/mjpg
録画は、キーボードのキーを押すことで開始、停止、再開できます。
qを押して録画を開始、または一時停止/再開します。eを押して録画を停止または保存します。プログラムを終了するには、
Ctrl+Cを押してください。
コード
from time import sleep,strftime,localtime
from vilib import Vilib
import readchar
from os import getlogin
USERNAME = getlogin()
VIDEO_PATH = f"/home/{USERNAME}/Videos/"
MANUAL = '''
Press keys on keyboard to control recording:
Q: record/pause/continue
E: stop
Ctrl^C: Quit
'''
def print_overwrite(msg, end='', flush=True):
print('\r\033[2K', end='',flush=True)
print(msg, end=end, flush=True)
def main():
rec_flag = 'stop' # start, pause, stop
vname = None
Vilib.rec_video_set["path"] = VIDEO_PATH
Vilib.camera_start(vflip=False,hflip=False)
Vilib.display(local=True,web=True)
sleep(0.8) # スタートアップを待機
print(MANUAL)
while True:
# キーボード入力を読み取る
key = readchar.readkey()
key = key.lower()
# 録画開始、一時停止
if key == 'q':
key = None
if rec_flag == 'stop':
rec_flag = 'start'
# 名前を設定
vname = strftime("%Y-%m-%d-%H.%M.%S", localtime())
Vilib.rec_video_set["name"] = vname
# 録画を開始
Vilib.rec_video_run()
Vilib.rec_video_start()
print_overwrite('rec start ...')
elif rec_flag == 'start':
rec_flag = 'pause'
Vilib.rec_video_pause()
print_overwrite('pause')
elif rec_flag == 'pause':
rec_flag = 'start'
Vilib.rec_video_start()
print_overwrite('continue')
# 停止
elif key == 'e' and rec_flag != 'stop':
key = None
rec_flag = 'stop'
Vilib.rec_video_stop()
print_overwrite("ビデオは%s%s.aviとして保存されました"%(Vilib.rec_video_set["path"],vname),end='\n')
# 終了
elif key == readchar.key.CTRL_C:
Vilib.camera_close()
print('\nquit')
break
sleep(0.1)
if __name__ == "__main__":
main()
仕組みは?
録画に関連する機能は以下の通りです:
Vilib.rec_video_run(video_name): 録画スレッドを開始します。video_nameはビデオファイルの名前で、文字列で指定する必要があります。Vilib.rec_video_start(): 録画を開始または再開します。Vilib.rec_video_pause(): 録画を一時停止します。Vilib.rec_video_stop(): 録画を停止します。
Vilib.rec_video_set["path"] = "~/video/test/" は、ビデオファイルの保存先を設定します。