ユースケース
- HDMIでビデオ信号を入力しRaspberry Pi zero wをRTSPサーバとしてストリーミング再生させる。
使用機材
- 冬虫電子TC358743基板 または C779基板
- Raspberry Pi zero w基板
- Windows 10 PC
- HDMI出力機器(例。HDMI出力付パソコン)
- HDMIケーブル
- microSDカード(16GBを使用)
- micro USBオスで電源供給する何か(USB充電器+USBケーブル使用)
- Raspberry Pi zero wにはモニタもキーボードもマウスも接続せず、Windows 10 PCからのssh接続で使う。
- Wi-Fiルーター(ssh接続元のWindowsPCとラズパイzero wはWi-Fi接続)
0.ソフトver.
- Raspberry Pi Imager v.1.6.2
- apt-get install等のダウンロードは2021/10/27実施
1.microSDにラズパイイメージを書く
Raspberry Pi ImagerでRaspberry Pi OS Lite(32-bit)を焼く
※Raspberry Pi OS Fullでもイケるし、他でもイケるかも。
ベリファイが終わったら、SDカードを抜ける旨が表示されるので一旦ぬく。
2.Wi-FiとSSHの設定
microSDカード内の以下のファイルの設定をする。私の場合は、Ext2 Volume Managerというソフトを使い、ドライブをアサインしたり、外したりした。
- bootパーティション のルートフォルダにsshという名前の空(から)ファイルを作成する。
- rootパーティション の /etc/wpa_supplicant/wpa_supplicant.conf に WiFiのSSIDとKeyの設定を反映する。私の場合は、WSL2/ubuntu環境で
$ sudo wpa_passphrase <SSID> <Key>
を実行し、その出力を、viでwpa_supplicant.confの最下行に追加した。
3.ssh接続
上記microSDカードをラズパイzero w基板に挿入し、電源ON後、1~2分待ってからWindows10のコマンドプロンプトで以下を実行。
>ssh pi@raspberrypi
もし以下のようなエラーが表示されたら
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi has changed,
and the key for the corresponding IP address fe80::78af:740:774a:9771%12
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:eyIkBxj5It4vf4nvSAuqZ73H3YtgrPp1SkzhX+e3qkE.
Please contact your system administrator.
Add correct host key in C:\\Users\\ユーザー名/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\ユーザー名/.ssh/known_hosts:5
ECDSA host key for raspberrypi has changed and you have requested strict checking.
Host key verification failed.
ファイル C:\Users\ユーザー名.ssh\known_hosts をテキストエディタで開いて raspberrypi
で始まる行を削除し保存する。
The authenticity of host 'raspberrypi (fe80::78af:740:774a:9771%12)' can't be established.
ECDSA key fingerprint is SHA256:eyIkBxj5It4vf4nvSAuqZ73H3YtgrPp1SkzhX+e3qkE.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
上記プロンプトにはyes
と入力しEnter押下
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'raspberrypi,fe80::78af:740:774a:9771%12' (ECDSA) to the list of known hosts.
pi@raspberrypi's password:
"raspberry"+Enter押下
ログインできたらデフォルトパスワードを変更しておく。
$ passwd
一応、入ってるソフトを最新にしておく。
$ sudo apt-get update
$ sudo apt-get upgrade
[Y/n]が表示されたらEnter押下
4.CameraとI2CのI/Fを有効にする
設定変更
$ sudo raspi-config
Interface Optionsを選ぶ
Cameraを選ぶ
…be enabled? に対してYes選択
再度Interface Optionsで
I2Cを選び
…be enabled? に対してYes
GPUメモリを256MBにする
カメラとして認識してるか確認
$ vcgencmd get_camera
supported=1 detected=1
と表示されればOK
$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
/dev/video11
/dev/video12
/dev/video18
bcm2835-isp (platform:bcm2835-isp):
/dev/video13
/dev/video14
/dev/video15
/dev/video16
mmal service 16.1 (platform:bcm2835-v4l2-0):
/dev/video0
mmal service 16.1 (platform:bcm2835-v4l2-0):
が表示されてたらオッケー
5.v4l2rtspserverのインストール
必要なライブラリ等のインストール
$ sudo apt-get install libssl-dev liblivemedia-dev cmake subversion git
Do you want to continue? [Y/n]
が表示されたらEnter押下
v4l2rtspserverをgitでcloneし、ビルド
$ mkdir git
$ cd git
$ mkdir mpromonet
$ cd mpromonet
$ git clone https://github.com/mpromonet/v4l2rtspserver.git
$ cd v4l2rtspserver
$ cmake .
私のケースでは数回とも
Cloning into '/home/pi/git/mpromonet/v4l2rtspserver/hls.js'...
の表示から 次の表示が出るまで1時間半前後かかった。
$ make
$ sudo make install
6.ストリーミング再生実行
冬虫 or C779基板のHDMI入力にHDMI出力機器(ノートパソコン等)を接続する。ここでは1920x1080のHDMI出力を接続した。
RTSPサーバー実行
$ sudo reboot
再起動後
$ v4l2rtspserver -fH264 -W 1920
※オプションを指定せずに起動すると、私の環境ではエラー終了した。
ビューワー実行
Windows10のVLC Media Player→メディア→ネットワークストリームを開く→ネットワークURLにrtsp://raspberrypi:8554/unicast
を入力→再生ボタン押下
参考にしたネット情報