windows10でサクッとkinesis video streamを動かす

latest update 2019/8/6
# 方針
windowsのWSLを有効にてubuntu16.04を動かす.
ubuntu上でdockerを走らせて, AWSからイメージをpullしてサクッと実行する

# 事前準備
AWSでaccess keyとSecret Keyは作っておいてください
rtspサーバアプリ(?)をスマホにインストールしてください。　今回はlive-reporterをインストールします

# 手順
## 1 : windows10のWSLを有効にする
1. タスクバーのスタートを右クリック
2. 一番上の"アプリと機能"をクリック
3. 出てきたウィンドウの右側にある"プログラムと機能"をクリック
4. またウィンドウが出るので, 左側の"Windowsの機能の有効化または無効化"をクリック
5. またまたウィンドウが出るので, "Windows Subsystem for Linux"にチェックを付けてOKを押す
6. 促されるまま再起動

## 2 : ubuntu16.04のインストール
1. Mycrosoft Storeを開く
2. ubuntu16.04で検索する
3. ubuntu16.04 LTSをインストールする(バージョンは16.04!!!)

## 3 : dockerインストール
### 3-1 : windowsのバージョンを確認する
1. コマンドプロンプトを立ち上げる
2. ``` $winver ```コマンドを叩く

自分のwindows10のバージョンが1803か1809か確認して覚えておいておく
### 1803の手順
```
$curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
$sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
$sudo usermod -aG docker $USER
$sudo cgroupfs-mount
$sudo service docker start
$sudo service docker status
```
```* Docker is running```が表示された人は正しくdockerがインストールされています。
### 1809の手順
```
$sudo apt install docker.io
$sudo cgroupfs-mount
$sudo usermod -aG docker $USER
$sudo service docker start
$sudo service docker status
```
```* Docker is running```が表示された人は正しくdockerがインストールされています。

## 4 : 必要なものをインストールしよう
### 4-1 : pipのインストール
```
$sudo apt install pip
$sudo pip install pip --upgrade
$python -m pip --version (pipコマンドが使えなくなるんだよなぁ)
```
### 4-2 : awscliのインストール
```
$sudo python -m pip install awscli (aptでawscli入れると古いのしか使えない)
$python -m pip show awscli 
$export PATH=$PATH:site-packageまでのパス (例: )
```

### 4-3 : awsの認証をいい感じにする
```
$aws configure
AWS Access Key ID []:アクセスキーコピペ
AWS Secret Access Key []:シークレットキーコピペ
Default region name []:ap-northeast-1
Default output format []:json
```

## 5 : dockerにログイン
```
$aws ecr get-login --no-include-email --region us-west-2 --registry-ids 546150905175
docker login -u AWS -p xxxxxxxx https://546150905175.dkr.ecr.us-west-2.amazonaws.com

$docker login -u AWS -p xxxxxxxx https://546150905175.dkr.ecr.us-west-2.amazonaws.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
```

xxxxxxxxxはめっちゃ長いので注意

## 6 : イメージのダウンロード
```
$ sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
latest: Pulling from kinesis-video-producer-sdk-cpp-amazon-linux
Digest: sha256:611a6ccb5f60dfdd60473db591eba9738b42b9e864acd3df570b7124d597f4d0
Status: Image is up to date for 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

$ docker image //確認
REPOSITORY                                                                                 TAG                 IMAGE ID            CREATED             SIZE
546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux   latest              36a8d19a8ca5        10 days ago         2.82GB
```

## 7 : イメージの実行
```
$ sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
bash-4.2#
```

## 8 : 配信
### 8-1 : 設定
```
$ export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH
$ export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH
$ export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH
```

### 8-2 : live-reporterアプリの実行
スマホにインストールしたlive-reporterを起動します

### 8-3 : 配信プログラム実行
```
$ AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=xxx AWS_DEFAULT_REGION=ap-northeast-1 ./kinesis_video_gstreamer_sample_app ストリーム名 rtsp://live-reporterのURL/ 
```

# あとがき
最近IT系のニュースを見ていたらWSL2に対応したdockerが今後リリースされるみたいなので, docker導入がもっと楽になるといいですね。
もっといい方法や指摘等あればご報告ください。

# リファレンス
ubuntu導入まで: https://qiita.com/Aruneko/items/c79810b0b015bebf30bb
docker導入まで: http://www.nuits.jp/entry/docker-on-wsl
dockerログインから配信まで: https://dev.classmethod.jp/cloud/amazon-kinesis-vidseo-stream-docket-mac/
環境に適したdockerを入れる: https://www.usagi1975.com/201902220052/
pipで入れたコマンドが使えない: https://tech.innovator.jp.net/entry/2019/01/15/130014
live-reporter: https://dotapps.jp/product_contents/RMYIkwZv9jje45KB