ラズパイzero w+TC358743(冬虫orC779)基板 の構成で 初期状態のmicroSDをHDMI入力→RTSPストリーミング再生するまでの手順

# ユースケース
+ HDMIでビデオ信号を入力しRaspberry Pi zero wをRTSPサーバとしてストリーミング再生させる。


# 使用機材
+ [冬虫電子TC358743基板](https://world.taobao.com/item/602390051699.htm) または [C779基板](https://wiki.geekworm.com/HDMI_TO_CSI-2)
+ 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というソフトを使い、ドライブをアサインしたり、外したりした。

1. bootパーティション のルートフォルダにsshという名前の空(から)ファイルを作成する。
1. 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
```

![2021-10-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/947730d3-381f-37ba-a54a-b2653f25c31a.png)

Interface Optionsを選ぶ

![2021-10-27 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/d392ed6c-bf1d-57f4-d8ce-b5edd4163c60.png)

Cameraを選ぶ

![2021-10-27 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/a0126237-5cef-aa0c-28f6-5a712078f037.png)

…be enabled? に対してYes選択

![2021-10-27 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/313a3505-9a80-f787-1b52-30a053fa4a8a.png)

![2021-10-27 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/9461459d-3597-f9d5-71b6-0fb7c93fa1fe.png)

![2021-10-27 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/d4d50f8a-5e31-7d3d-77a3-503e57650717.png)

再度Interface Optionsで

![2021-10-27 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/e2fadf7d-c6cf-0ac2-5e53-2a2dfdbeba1b.png)

I2Cを選び

![2021-10-27 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/27b2abad-8aa5-9b24-44d9-4781910db200.png)

…be enabled? に対してYes

![2021-10-27 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/0445e68d-08ed-9871-264c-48aba76bda73.png)

![2021-10-27 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/751740b6-26a3-177f-8be9-0099292f7dfd.png)

![2021-10-27 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/1786f972-1f4d-9cf8-3253-cf13096eb923.png)

![2021-10-27 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/d2af4ca4-ed6b-4ea7-3b90-500102b1ab07.png)

GPUメモリを256MBにする

![2021-10-27 (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/138e53d1-4f2b-f72c-afff-8e448982f70b.png)

![2021-10-27 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131546/a7f10710-6e8f-e385-3847-0efba36a717f.png)

## カメラとして認識してるか確認

```
$ 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```を入力→再生ボタン押下

# 参考にしたネット情報

https://www.mzyy94.com/blog/2020/04/10/raspberrypi-hdmi-input/

https://github.com/mpromonet/v4l2rtspserver/wiki/Setup-on-Pi