Raspiカメラの起動はかなり簡単です。
raspivid -t 10000 -o test.h264
問題:
これを止める方法はありません。私の知る限りでは、小売用のカメラはありません。何秒実行するかをユーザーが指定し、停止するまでその秒数実行する必要があるため、これは私には本当に愚かです。
バックグラウンド:
これは監視に大きな問題を提起します。ユーザーが離れるとホームサーベイランスがオンになり、帰宅すると再びオフになるプログラムを作成しています。ユーザーが戻る直前にモーションが検出されると、カメラは所定の時間(つまり10分間)録画を開始しますが、raspivid
コマンドがブロックされているため、ユーザーが実際に家にいるという状況になりますが、プログラムであるsurveillance
状態。これを回避するために、raspivid
コマンドを起動するためのスレッドを起動します。これで、ユーザーの出入りに基づいて状態が正しく更新されるようになりました。しかし、今では他の州は機能しません。たとえば、TV
HD映像の録画とそれを同時に見ることができないため、状態に切り替えることができません。同様に、に切り替えることはできませんParty
カメラが既に録画しているため、状態(パーティーの常時ビデオ録画)。
可能な解決策:
Webで見つけたコード(ただし、リンクが見つからない)を使用して、raspivid
コマンドを起動したスレッドを強制終了するハックを見つけました。残念ながら、これはSOによる冒涜と見なされます(こことここを参照)。これは、.h264
ファイルを破損してメモリリークを引き起こす可能性があるだけでなく、コーディングするのが悪夢であることにも同意します(ロックとモーション検出のために他のスレッドも起動しているので、セマフォはどこにでもあります)
質問:
raspiカメラの録画を停止する方法はありますか?そうでない場合、なぜそうではないのですか?
popen = subprocess.Popen ( cmd )
and を使用して、この問題を回避する方法を見つけることができましたpopen.send_signal ( signal.SIGINT )