監視カメラを作りたい
↑完成記事
やりたいこと
ウェブカメラ買ってみたので、監視カメラのように日付を画面に付与しながら録画し、G Drive に上げ続けてみたい気持ちがある(無限ドライブを埋めたいという気持ちがデカくて、外の風景とか適当に撮ろうかなと) -- @public_yusuke
ffmpeg のコマンド
最終版@Win:
code:sh
ffmpeg -f dshow -rtbufsize 300M -video_size 1920x1080 -framerate 30 -i video="webcam":audio="マイク (USB microphone)" -vf "scale=1920:-1,drawtext=fontsize=36:fontcolor=yellow:text='%{localtime}'" -c:v h264_nvenc -preset medium -x264-params keyint=120:scenecut=0 -c:a libmp3lame -pix_fmt yuv420p -flags +global_header -b:v 2000k -r 30 -f tee -map 0:v -map 0:a -s 1920x1080 "f=flv:onfail=ignorertmp://a.rtmp.youtube.com/live2/<key>|f=segment:segment_time=14400:reset_timestamps=1:strftime=1D:%Y-%m-%d\\cameratest-%Y-%m-%d-%H-%M-%S.mp4" ↓から発展させて作った
code:sh
ffmpeg -f dshow -rtbufsize 100M -video_size 1920x1080 -i video="webcam":audio="マイク (USB microphone)" -vf "drawtext=fontsize=36:fontcolor=yellow:text='%{localtime}'" -c:v h264_nvenc -preset slow -f segment -segment_time 14400 -reset_timestamps 1 -strftime 1 D:%Y-%m-%d\cameratest-%Y-%m-%d-%H-%M-%S.mp4
参考
↑これは Windows で動かしているときのやつだから、Raspberry Pi を買ったらまた変更しなければいけない(主に dshow と nvenc のあたり)
これで日付が画面左上に黄色で付与されるようになり、14400秒(4時間)ごとに分割されながら録画されるようになる。
cameratest-%Y-%m-%d-%H-%M-%S.mp4の例: cameratest-2020-09-04-12-05-15.mp4
保存先は日付が付いたフォルダの中になっているが、ffmpeg はディレクトリが存在しないときに自動的に作ったりはしてくれないようなので、cron とかで自動で作成するようにする必要がある。
そうすれば、このコマンドの実行のみを延々とするだけで監視カメラの録画は完成する。
rclone のコマンド
毎日深夜0時に前日のディレクトリを rclone copy し、終わり次第削除してしまえば良いと思う。32 GB の SD カードがあれば1日の分の録画は収まるので、それを使い潰そうと考えている。
SD カードが死ぬのでは?
死んだらそれはそれでおもしろ体験なのでok
いややっぱダメだろ 面倒くさいし
tmpfs に録画を書き込めば良さそう?(逐次アップロード&削除すれば間に合う)
電源落ちたら全部消えるが……?
外付けHDDを買えばNASみたいなこともできるしそれでいいんじゃないか
それでいいじゃん
やりたいこと
リアルタイムで確認できるように(YouTube Live に投げる?)✅
なんかこれ Youtube Live 側だと 65535x65535 サイズの動画が送信されているかのように認識されていて視聴すると 1:1 のアスペクト比になってて見づらい。録画そのものは特に異常はないのだが
と思ったらなぜか直った(なんで?)
YouTube Live に非公開設定で投げることで自分だけが安全に確認できる。新たにサーバーを建てたりする必要がない(面倒な設定を省ける)
3秒ぐらいの遅延であることを確認した
Raspberry Pi 4 を買う
早く買え
どうせだから 8 GB モデルを買おうと考えています(今借りてる VPS 閉じちゃってラズパイ上で様々を動かしちゃってもいいかな〜なんて考えもなんとなく浮かんでいる)