Raspberry Pi 4Bで4Kカメラは扱えるか?エンコード性能を徹底検証

スマートホーム
スポンサーリンク
このエントリーをはてなブックマークに追加

はじめに

2019年6月にRaspberry Pi 4Bが発売され、Raspberry Piの性能は飛躍的に向上しました。動画関係では、フルHD(1920×1080)対応のh264ハードウェアエンコーダを搭載し、CPUに負荷をかけることなく、動画圧縮が可能となっています。

さらに最近では、Raspberry Pi用のHigh Quality Cameraや4Kカメラモジュールが発売され、画像・動画に関するRaspberry Piの用途が拡大しています。

しかし、Raspberry Pi 4Bで4K動画を扱った情報は少なく、実機で試してみたいと分からない状態でした。そこで、今回は、4Kカメラモジュールを入手し、Raspberry Pi 4Bで4K動画をどこまで扱えるか、徹底検証してみました。

検証機材

今回の検証に利用した機材は以下の通りです。

①Raspberry Pi 4B 8GB

今回の検証の中心となるRaspberry Pi(ラズパイ)です。現在発売されている最も高性能な8GBモデルを利用しました。

②4Kカメラモジュール

動画を撮影する4Kのカメラモジュールです。Raspberry PiのCameraコネクタに接続するタイプではなく、USBタイプで、Linuxから扱えるUVCに対応したものです。

エンコード性能を検証

早速、Raspberry Piの性能を検証していきます。ちなみに、今回利用したRaspberry PiのOSは「2020-05-27-raspios-buster」です。

カメラ性能の検証

まずは、購入した4Kカメラの確認&検証を行います。

①USB 4Kカメラの接続確認

Raspberry PiのUSB 3.0ポート(青色の方)にUSBカメラを挿し、接続確認します。今回使用したカメラは以下のように認識されました。 lsusbでは、メーカ名が表示されない😭まあ、認識されているので良し。

②v4l2-ctlで確認

UVC接続のUSBカメラは、Linuxでは「v4l2」というドライバを経由して制御します。そこでv4l2経由でカメラの情報を確認します。ちゃんと「HD USB CAMERA: HD USB CAMERA」として/dev/video0と/dev/video1で認識されています。

③対応フォーマットの確認

次に、カメラが対応している動画フォーマットを確認します。今回使用したカメラの対応フォーマットは以下の通りでした。4Kカメラだけに、4K(3840×2160)はもちろん、フルHD(1920×1080)等にも対応しています。また、フォーマットは「’MJPG’ (Motion-JPEG, compressed)」と「’YUYV’ (YUYV 4:2:2)」に対応しています。

④カメラ性能の検証

それでは、カメラ性能について検証していきます。この検証は、単純にカメラから4Kのデータが取得できるかというもので、いわばUSB3.0ポートの性能検証の意味合いです。

■フルHD(1920×1080)での検証結果

30fps程度のフレームレートが出ており、問題なし!

■4K(3840×2160)での検証結果

4Kでもちゃんと30fps程度のフレームレートが出ており、問題なし!この辺りがUSB 3.0対応のRaspberry Pi 4Bの実力の凄さかと思います。

以上でカメラ性能の検証は完了です!!結論は問題なし!ということで、Raspberry Pi 4Bでは4Kカメラの動画を取得して、それを画面に表示することは問題なく(30fpsでは)できます

エンコード性能の検証

次にエンコード性能の検証を行います。4K動画のデータ量は膨大なので、圧縮無しには、動画の保存もネットワークを介した送信も大変です。なので、4K動画を本質的に扱うためには、エンコードできないと使えません。

①エンコード性能の検証方法

今回は、ffmpegを用いて、4Kカメラで撮影した動画をSDカード内に保存する処理で検証します。また、エンコードは、h264、mjpeg、copy(非圧縮)の3種類の比較を行います。CPUの温度、周波数、使用率は「s-tui」を使用して測定しています。以下の結果は、動画の保存を開始し、fpsの値が落ち着いて来た時点をベースに測定しています。

②フルHD動画の測定結果

4K動画の前に、まずはフルHD動画の測定結果からです。

■フルHD(1920×1080)h264_omx(ハードウェアエンコード)

Raspberry Pi 4Bに搭載されたハードウェアエンコーダを利用したh264動画圧縮の測定結果です。ハードウェアエンコードが効いて、CPUをほとんど使わず、fps=28が出ています。

 fps=28
 CPU=21.9%

■フルHD (1920×1080)h264(1CPU)

Raspberry Pi 4BのCPU(1個)を使ったh264動画圧縮(ソフトウェアエンコード)の測定結果です。fps=4.4という結果となり、実用的ではありません。

 fps=4.4
 CPU=26.0%

■フルHD(1920×1080)h264(4CPU)

Raspberry Pi 4BのCPU(4個)をフルに使ったh264動画圧縮(ソフトウェアエンコード)の測定結果です。fps=15という結果となり、テレビ会議は辛いですが、防犯カメラ程度であれば十分かもしれません。

 fps=15
 CPU=79.0%

■フルHD(1920×1080) mjpeg(4CPU)

Raspberry Pi 4BのCPU(4個)をフルに使ったmjpeg動画圧縮(ソフトウェアエンコード)の測定結果です。fps=29という結果となり、十分です。ただし、h264と比較して8倍のデータ量となります。

 fps=29
 CPU=62.6%

■フルHD(1920×1080) copy(4CPU)

Raspberry Pi 4BのCPU(1個)を使った無圧縮の測定結果です。単にファイルに書き込んでいるだけなので、CPUもほどんど使わず、fps=30という結果ですね。ただし、ビットレートは36,031kbits/sとなり膨大なデータ量となります。

 fps=30
 CPU=5.1%

③4K動画の測定結果

いよいよ本題の4K動画の測定結果です。

■4K(3840×2160)h264(1CPU)

Raspberry Pi 4BのCPU(1個)を使ったh264動画圧縮(ソフトウェアエンコード)の測定結果です。fps=1.0という結果となり、まったく使い物になりません。

 fps=1.0
 CPU=25.5%

■4K(3840×2160)h264(4CPU)

Raspberry Pi 4BのCPU(4個)をフルに使ったh264動画圧縮(ソフトウェアエンコード)の測定結果です。fps=3.6という結果となり、はやりRaspberry Piでは4K動画をh264で扱うのは厳しいです。

 fps=3.6
 CPU=84.5%

■4K(3840×2160)mjpeg(4CPU)

Raspberry Pi 4BのCPU(4個)をフルに使ったmjpeg動画圧縮(ソフトウェアエンコード)の測定結果です。fps=15という結果です。CPUを4つフルに使っても、防犯カメラ程度ですね。

 fps=15
 CPU=100%

■4K(3840×2160)copy(1CPU)

Raspberry Pi 4BのCPU(1個)を使った無圧縮の測定結果です。単にファイルに書き込んでいるだけなので、CPUもほどんど使わず、fps=29という結果ですね。ただし、ビットレートは108,306kbits/sとなり、48.6GB/時という膨大なデータ量となります。

 fps=29
 CPU=4.0%

測定結果サマリー

測定条件を変えながら実機検証した、4K動画とフルHD動画の測定結果のサマリーです。

おわりに

Raspberry Pi 4Bで4K動画がどこまで扱えるか、4Kカメラと実機を使って検証してみました。フルHD動画についてはハードウェアエンコーダが使えるので十分に使えるという結論です。

ただし、4K動画についてはハードウェアエンコーダが対応していないので、CPUを使ったソフトウェアエンコードに頼るしかなく、h264ではCPUを4つを使っても3.6fpsしか出ず、使い物にならないという結論です。動画サイズを妥協してmjpegでも、CPUを4つ使っても15fpsなので他の処理が何もできない状態です。

このため、Raspberry Pi 4Bの性能が良くなったといえども、4K動画を扱うには性能不という結論かと思われます。未来のRaspberry Pi 5B?に期待ですね。

補足:SDカードの書き込み速度がボトルネックになっている可能性も考え、メモリ上に書き込む検証も行いましたが、結果は変わらずボトルネックはCPUのようです。

関連記事

記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。
スポンサーリンク
naka-kazz

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。質問・コメントは、↓のコメント蘭でもFacebookメッセンジャーでもどちらでも大丈夫です。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム 開発者向け
naka-kazzをフォローする
育児×家事×IoT

コメント

タイトルとURLをコピーしました