ATOMCam2 のカスタムファームウェアを使った動体検知録画転送通知を PHP で受け取って ffmpeg で HLS に変換します。
準備
動体検知動画を受け取るwebサーバをたてます。
自宅サーバがあれば楽ちんです。
GCP でも AWS でも何でもいいと思います。
今回は Apache httpd で作ってみました。
PHP を使いたいので mod_php を読み込みます。
<VirtualHost *:8088>
DocumentRoot /var/www/atomcam2
ErrorLog logs/atomcam2-error_log
CustomLog logs/atomcam2-access_log common
<IfModule prefork.c>
LoadModule php_module modules/mod_php.so
</IfModule>
<Directory "/var/www/atomcam2">
AllowOverride All
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>
ATOMCam2 の通知設定
ATOMCam2 のウェブ設定画面からイベント通知の動体検知録画転送を有効にします。
通知URLに受け取れるWebサーバのURLを書いておきます。
PHP で通知を受け取って動画を保存する
ATOMCam2 からの通知は、リクエスト Body の FILES から取得できます。
$f = $_FILES["video"];
move_uploaded_file($f['tmp_name'], '/tmp/atomcam2_savemp4/video.mp4');
HLS に変換する
ここ迄で既に動画保存はできていますが、ffmpeg で HLS に変換してストリーミングできるようにします。
exec('/usr/bin/ffmpeg -i /tmp/atomcam2_savemp4/video.mp4 -c:v copy -c:a copy -f hls -hls_time 10 -hls_playlist_type vod -hls_segment_filename "/tmp/atomcam2_savemp4/output-%3d.ts" /tmp/atomcam2_savemp4/output.m3u8');
HLS に変換した後は自分用の配信サーバにアップロードするとか、自宅サーバに置いとくとか色々できますね。
ATOMCam2 カスタムファームウェア作者様に感謝を。