カメラモジュールv3を買ったので、どんなもんか見てみようと思って、久々にラズパイを起動。
電源を繋いで電源を入れる。あれキーボードとマウスは・・・。と思ったけど、VNC接続出来たはずと思い、HDMIケーブルだけ接続してみた。
VNCとはなんぞやという人は、以下のリンク参照。
VNC接続のユーザー名とパスワードを聞かれたけど、そんなもん忘れてる。はて困った。
ズボラな私のことだ。ユーザー名はデフォルトのはず。パスワードはいつもの・・・と思って入れたら入れた。
カメラを接続し、ターミナルからコマンドを入れてみた。
libcamera-hello
うん。ちゃんと接続している。
helloコマンドは、オプションを指定しないと5秒で終了するので、無限にカメラの映像を見るために -t 0 を追加してみた。
libcamera-hello -t 0
こんな感じで、映像が見れる。30fpsで伝送してくれているけど、VNCで伝送されている方はカクついていましたが、HDMIで繋いだテレビの方ではスムーズな映像。このDIY感がたまらない♪
周囲をできるだけ広く確認したかったので、今回買ったのは広角のカメラです。(ちょっと高かったけど)
さて、このカメラでどこまでの事ができるのか実験してみますよ〜
まずは、写真を撮ってみました。
libcamera-jpeg -o test.jpg
フル解像度(4608✖️2592)の写真が撮れました。
libcamera-jpeg --hdr 1 -o hdrtest.jpg
HDRをonにして写真を撮ると、白飛びしていた空に電線が見えました。
次に、動画を録画してみました。
libcamera-vid -o test.h264 --save-pts timestamps.txt
このコマンドで、test.h264という動画ストリームを録画し、タイムスタンプをtimestamps.txtという名前で保存します。タイムスタンプとは、録画したストリーム(静止画の集合体)にある各静止画を記録した時間を記録したテキストファイルで、開いてみたらこうなっていました。
各フレームごとの秒数(ms)がずらっと記録されているだけ。
この2つを合体させます。
mkvmerge -o test.mkv --timecodes 0:timestamps.txt test.h264
これで、mkvファイルになりました。出来上がったmkvファイルはこちら。
もうちょっと細かく設定してみました。
libcamera-vid --level 5 --framerate 60 --width 1920 --height 1080 --save-pts timestamp.pts -o video.264 -t 10000
ここで指定したオプションは次の通りです。
–level 5 | ここで調べて必要なレベルを指定します。 |
–framerate | フレームレート |
–width | 録画幅 |
–height | 録画高さ |
–save-pts | タイムスタンプを記録するファイル名 |
-o | 保存するファイル名 |
-t | 録画時間(ミリ秒) |
これ60fps出てるかな?サイズは1920✖️1080になってるけど・・・。
これはもしかしたら、設定がうまく行っていないために起こっているのかもしれません。カメラを使う度に、こんなメッセージが出ていました。
黄色でWARNってなっている部分を対処しなければいけないのかも知れません。
と思って、Raspberry piのフォーラムに行ってみたら、このエラーメッセージは無視して良いようなことが書いてありました。次期リリースで修正されるようです。
MP4Boxのインストール
さて、ラズパイで出力されるh264ファイルは、そのまま再生すると、正しく再生されないので、mp4に変換しておきたいです。そこで使うのがMP4Boxです。インストールは次のコマンドで。
sudo apt-get install gpac
インストールしようとすると、何やらエラーが・・・。エラーメッセージを解読して
sudo apt-get install gpac --fix-missing
これでインストールがうまく行きました。
では、さっきのvideo.264ファイルをタイムスタンプ無しに変換してみます。
MP4Box -add video.264 video.mp4
これだけで変換してくれるってありがたや〜!!
MP4Boxについては、こちらの記事を参考にさせていただきました。
https://tora-k.com/2020/11/16/raspberrypi4-picamera/