Skip to content

Commit

Permalink
Merge branch 'release/2020.10'
Browse files Browse the repository at this point in the history
  • Loading branch information
voluntas committed Nov 30, 2020
2 parents 664ba97 + 7ff1d8a commit 5ae4500
Show file tree
Hide file tree
Showing 46 changed files with 527 additions and 336 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,3 +217,27 @@ jobs:
asset_path: ${{ steps.env.outputs.package_name }}/${{ steps.env.outputs.package_name }}
asset_name: ${{ steps.env.outputs.package_name }}
asset_content_type: ${{ steps.env.outputs.content_type }}
notification:
name: Slack Notification
runs-on: ubuntu-latest
needs:
- build-windows
- build-macos
- build-linux
- create-release
- upload-assets
if: always()
steps:
- uses: actions/checkout@v2
- uses: rtCamp/action-slack-notify@v2
if: |
needs.build-windows.result == 'failure' ||
needs.build-macos.result == 'failure' ||
needs.build-linux.result == 'failure' ||
needs.create-release.result == 'failure' ||
needs.upload-assets.result == 'failure'
env:
SLACK_CHANNEL: open-momo
SLACK_COLOR: danger
SLACK_TITLE: Failure build
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
20 changes: 20 additions & 0 deletions .github/workflows/daily_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,23 @@ jobs:
- run: ./build.sh --no-tty --no-mount ${{ matrix.name }}
working-directory: build
timeout-minutes: 120
notification:
name: Slack Notification
runs-on: ubuntu-latest
needs:
- build-windows
- build-macos
- build-linux
if: always()
steps:
- uses: actions/checkout@v2
- uses: rtCamp/action-slack-notify@v2
if: |
needs.build-windows.result == 'failure' ||
needs.build-macos.result == 'failure' ||
needs.build-linux.result == 'failure'
env:
SLACK_CHANNEL: open-momo
SLACK_COLOR: danger
SLACK_TITLE: Failure build
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
11 changes: 11 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,17 @@

## develop

## 2020.10

- [CHANGE] `--use-native``--hw-mjpeg-decoder=<bool>` に変更して、ソフトウェアエンコーダとの組み合わせを不可にする
- @melpon @tnoho
- [UPDATE] `libwebrtc``M88.4324@{#0}` に上げる
- @tnoho @melpon @voluntas
- [UPDATE] cmake を 3.18.4 に上げる
- @voluntas
- [ADD] Jetson Nano で VP8 HWA が利用できるようにする
- @tnoho

## 2020.9

- [CHANGE] `ubuntu-16.04_x86_64_ros` を削除
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,8 @@ elseif (TARGET_OS STREQUAL "linux")
target_sources(momo
PRIVATE
src/hwenc_jetson/jetson_buffer.cpp
src/hwenc_jetson/jetson_jpeg_decoder.cpp
src/hwenc_jetson/jetson_jpeg_decoder_pool.cpp
src/hwenc_jetson/jetson_v4l2_capturer.cpp
src/hwenc_jetson/jetson_video_encoder.cpp
src/hwenc_jetson/jetson_video_decoder.cpp
Expand Down
4 changes: 2 additions & 2 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ http://192.0.2.100:8080/html/test

## Use "Ayame mode"

"Ayame Lite" is a free signaling server.
"Ayame Labo" is a free signaling server service.

The room ID is "open-momo-en" in the sample, but it is recommended to use an ID that is difficult to guess.

```shell
$ ./momo --no-audio-device ayame wss://ayame-lite.shiguredo.jp/signaling open-momo-en
$ ./momo --no-audio-device ayame wss://ayame-labo.shiguredo.jp/signaling open-momo-en
```

Check with the online sample of Ayame Web SDK.
Expand Down
20 changes: 9 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# WebRTC Native Client Momo

[![libwebrtc](https://img.shields.io/badge/libwebrtc-m86.4240.10-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/4240)
[![libwebrtc](https://img.shields.io/badge/libwebrtc-m88.4324-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/4324)
[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/shiguredo/momo.svg)](https://github.com/shiguredo/momo)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Actions Status](https://github.com/shiguredo/momo/workflows/daily-build-workflow/badge.svg)](https://github.com/shiguredo/momo/actions)
Expand All @@ -22,9 +22,9 @@ https://momo.shiguredo.jp/

### ハードウェアエンコーダへの対応

- NVIDIA Jetson に搭載されている H.264 や VP8 や VP9 ハードウェアエンコーダー機能を利用することで 4K@30 での配信が可能です
- Raspberry Pi の GPU に積まれている H.264 ハードウェアエンコーダー機能を利用することが可能です
- Apple macOS に搭載されている H.264 ハードウェアエンコーダー機能を [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) 経由で利用しています
- NVIDIA Jetson に搭載されている H.264 や VP9 ハードウェアエンコーダー機能を利用することで 4K@30 での配信が可能です
- NVIDIA ビデオカードに搭載されている H.264 ハードウェアエンコーダー機能を [NVIDIA VIDEO CODEC SDK](https://developer.nvidia.com/nvidia-video-codec-sdk) 経由で利用しています

### 4K 30fps での配信
Expand Down Expand Up @@ -60,6 +60,10 @@ OpenMomo は WebRTC Native Client Momo をオープンソースとして公開

[OpenMomo プロジェクト](https://gist.github.com/voluntas/51c67d0d8ce7af9f24655cee4d7dd253)

また Momo についてのつぶやきは以下にまとめてあります。

https://gist.github.com/voluntas/51c67d0d8ce7af9f24655cee4d7dd253#twitter

## 既知の問題について

[既知の問題に対する解決方針](https://github.com/shiguredo/momo/issues/89)
Expand Down Expand Up @@ -191,6 +195,9 @@ limitations under the License.
- VP8 / VP9 / H.264 / H.265 ハードウェアエンコーダ対応
- 録画対応
- MP4 形式での出力
- WebM 形式での出力
- 録画合成対応
- Sora E2EE 対応

## Momo についての電子書籍

Expand Down Expand Up @@ -244,13 +251,4 @@ H.264 ハードウェアエンコーダ **のみ** を利用している Momo
- Intel Quick Sync Video のハードウェアエンコーダライセンス費用は別途、団体との契約が必要
- [QuickSync \- H\.264 patent licensing fees](https://software.intel.com/en-us/forums/intel-media-sdk/topic/494720)

## 利用例など

- [カメラ無しのラズパイとmomoでテスト映像をWebRTCで配信する \- Qiita](https://qiita.com/tetsu_koba/items/789a19cb575953f41a1a)
- [libwebRTCでFakeVideoしてみた \- Qiita](https://qiita.com/aikw/items/efb3726eb808a913d9da)
- [Run WebRTC Native Client Momo on Raspberry Pi 3B \| SHIROKU\.NET](https://shiroku.net/robotics/run-webrtc-native-client-momo-on-raspberry-pi-3b/)
- [WebRTC Native Client Momo がスゲエ – papalagi\.org](https://papalagi.org/blog/archives/635)
- [ラズパイのmomoで音声付きでWebRTCで配信する \- Qiita](https://qiita.com/tetsu_koba/items/33e335fb46f26bbd3431)
- [ラズパイ\+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する \- Qiita](https://qiita.com/tetsu_koba/items/b887c1a0be9f26b795f2)
- [ラズパイのmomoでステレオ音声でWebRTCで配信する \- Qiita](https://qiita.com/tetsu_koba/items/6c07129caa5a08d5d172)

7 changes: 4 additions & 3 deletions VERSION
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
MOMO_VERSION=2020.9
WEBRTC_BUILD_VERSION=86.4240.10.0
MOMO_VERSION=2020.10
WEBRTC_BUILD_VERSION=88.4324.0.0
BOOST_VERSION=1.74.0
JSON_VERSION=3.9.1
CLI11_VERSION=1.9.1
SDL2_VERSION=2.0.12
CMAKE_VERSION=3.18.3
CMAKE_VERSION=3.18.4
CUDA_VERSION=11.0.2-1
1 change: 1 addition & 0 deletions build/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ case "$PACKAGE" in
--build-arg JSON_VERSION=$JSON_VERSION \
--build-arg CLI11_VERSION=$CLI11_VERSION \
--build-arg CMAKE_VERSION=$CMAKE_VERSION \
--build-arg CUDA_VERSION=$CUDA_VERSION \
--build-arg PACKAGE_NAME=$PACKAGE \
$PACKAGE

Expand Down
3 changes: 2 additions & 1 deletion build/ubuntu-18.04_x86_64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ RUN \
&& make install

# CUDA 周りのインストール
ARG CUDA_VERSION
RUN set -ex \
&& apt-get update \
&& apt-get install -y software-properties-common \
Expand All @@ -135,4 +136,4 @@ RUN set -ex \
&& apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub \
&& add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get -y install cuda-11.0 clang-10
&& DEBIAN_FRONTEND=noninteractive apt-get -y install cuda=$CUDA_VERSION clang-10
11 changes: 6 additions & 5 deletions build/ubuntu-20.04_x86_64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,13 @@ RUN \
&& make install

# CUDA 周りのインストール
ARG CUDA_VERSION
RUN set -ex \
&& apt-get update \
&& apt-get install -y software-properties-common \
&& wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin \
&& mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
&& apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub \
&& add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" \
&& wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
&& mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
&& apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub \
&& add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get -y install cuda-11.0 clang-10
&& DEBIAN_FRONTEND=noninteractive apt-get -y install cuda=$CUDA_VERSION clang-10
4 changes: 3 additions & 1 deletion doc/BUILD_LINUX.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
$ git clone [email protected]:shiguredo/momo.git
```

## 環境について

## Docker の利用について

Linux 版 Momo をビルドする際には Docker 19.03 以降が必要になりますので、事前にインストールしておいてください。

Docker for Windows では未検証です。Linux 版、または Docker for Mac をご利用ください。
Docker for Windows では未検証です。 Linux x86_64 版、または Docker for Mac をご利用ください。

また、./build.sh 実行時に --no-mount オプションを指定することで、
マウントを利用しないモードで docker container を動作させることができます。何らかの理由でマウントがうまく動作しない場合に使って下さい。
Expand Down
8 changes: 6 additions & 2 deletions doc/BUY_JETSON.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ NVIDIA Jetson を購入する場合のオススメリンクです。

## Jetson Nano

- [Jetson Nano 開発者キット B01](https://www.switch-science.com/catalog/6239/)
- スイッチサイエンス
- [NVIDIA Jetson Nano 2GB 開発者キット 商品・個数選択](https://ryoyo-direct.jp/shopping/jetson-nano-2gb/jetson-nano-2gb)
- 菱洋エレクトロ株式会社
- Jetson Nano 2G 本体はこちらがおすすめです
- [NVIDIA Jetson Nano 開発者キット](https://ryoyo-direct.jp/shopping/jetson-nano/jetson-nano)
- 菱洋エレクトロ株式会社
- Jetson Nano 本体はこちらがおすすめです
- [【OLIOSPECオリジナル】NVIDIA Jetson Nano Developer kit用ケース\(長尾製作所製\)](https://www.oliospec.com/shopdetail/000000008491/)
- OLIOSPEC
- ケースはこちらがおすすめです
- **このケースは Jetson Nano 2G では利用できない可能性があります**
- [Micron MTSD032AHC6MS\-1WT 32GB 産業用microSDカード](https://www.oliospec.com/shop/shopdetail.html?brandcode=000000007374)
- OLIOSPEC
- SD カードはこちらがおすすめです
Expand Down
8 changes: 7 additions & 1 deletion doc/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Sora モードでのみ利用可能です。利用可能な映像コーデック

Sora モードでのみ利用可能です。

`Sora と Momo で WebRTC の AV1 を試す <https://gist.github.com/voluntas/db82783b6a3f012977e6de641a16181e>`_
[Sora と Momo で WebRTC の AV1 を試す](https://gist.github.com/voluntas/db82783b6a3f012977e6de641a16181e)

## 認証局の証明書を追加できますか?

Expand Down Expand Up @@ -85,3 +85,9 @@ NVENC が利用可能なビデオカードは以下で確認してください
## Mac で 60fps を利用できますか?

利用できません。60fps を使ってみたい場合は Jetson Nano などをご利用ください。

## Raspberry Pi (Raspberry-Pi-OS) で `--hw-mjpeg-decoder true` を指定した時に映像が出ません

RaspberryPi の MJPEG デコーダ は一部の MJPEG に対応したカメラでしか機能しません。

MJPEG に対応した CSI カメラや USB カメラをご用意いただくか、 `--hw-mjpeg-decoder false` にしてご利用ください。
6 changes: 3 additions & 3 deletions doc/SETUP_JETSON.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ $ tree

## Jetson Nano 向けの追加のオプション

### --use-native
### --hw-mjpeg-decoder

`--use-native` は ハードウェアによるビデオのリサイズ と USB カメラ用の場合 MJPEG をハードウェアデコードします。
`--hw-mjpeg-decoder` は ハードウェアによるビデオのリサイズ と USB カメラ用の場合 MJPEG をハードウェアデコードします。

```shell
$ ./momo --use-native --no-audio-device test
$ ./momo --hw-mjpeg-decoder=true --no-audio-device test
```

## 4K@30 を出すためにやること
Expand Down
45 changes: 29 additions & 16 deletions doc/SETUP_RASPBERRY_PI.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

https://github.com/shiguredo/momo/releases にて最新版のバイナリをダウンロードしてください。

- Raspberry Pi 2 や 3 や 4 を利用する場合は、 `momo-<VERSION>_raspberry-pic-os_armv7.tar.gz` を利用してください
- Raspberry Pi Zero や 1 を利用する場合は、 `momo-<VERSION>_raspberry-pic-os_armv6.tar.gz` を利用してください
- Raspberry Pi 2 や 3 や 4 を利用する場合は、 `momo-<VERSION>_raspberry-pi-os_armv7.tar.gz` を利用してください
- Raspberry Pi Zero や 1 を利用する場合は、 `momo-<VERSION>_raspberry-pi-os_armv6.tar.gz` を利用してください

## ダウンロードしたパッケージ、解凍後の構成

Expand All @@ -32,7 +32,7 @@ $ sudo apt-get upgrade
$ sudo apt-get install libnspr4 libnss3
```

### Raspberry-Pi-OS で Raspberry Pi の Raspberry Pi 用カメラを利用する場合
### Raspberry-Pi-OS で Raspberry Pi 用カメラなどの CSI カメラを利用する場合

これは USB カメラを利用する場合は不要なオプションです。

Expand All @@ -54,41 +54,54 @@ $ sudo modprobe bcm2835-v4l2 max_video_width=2592 max_video_height=1944

## Raspberry Pi 向けの追加のオプション

### --use-native
### --force-i420

**USB カメラの場合は無理に利用する必要はありません**
`--force-i420` は Raspberry Pi 専用カメラ用では MJPEG を使うとパフォーマンスが落ちるため HD 以上の解像度でも MJPEG にせず強制的に I420 でキャプチャーします。
USBカメラでは逆にフレームレートが落ちるため使わないでください。

`--use-native` は ハードウェアによるビデオのリサイズ と USB カメラ用の場合 MJPEG をハードウェアデコードします。

```shell
$ ./momo --use-native --no-audio-device test
$ ./momo --force-i420 --no-audio-device test
```

### --force-i420
## Raspberry Pi 専用カメラでパフォーマンスが出ない

`--force-i420` は Raspberry Pi 専用カメラ用では MJPEG を使うとパフォーマンスが落ちるため HD 以上の解像度でも MJPEG にせず強制的に I420 でキャプチャーします。
USBカメラでは逆にフレームレートが落ちるため使わないでください。
### --hw-mjpeg-decoder

`--hw-mjpeg-decoder` は ハードウェアによるビデオのリサイズをします。

```shell
$ ./momo --force-i420 --no-audio-device test
$ ./momo --hw-mjpeg-decoder true --no-audio-device test
```

## Raspberry Pi 専用カメラでパフォーマンスが出ない
### Raspberry Pi の設定を見直す

[Raspbian で Raspberry Pi の Raspberry Pi 用カメラを利用する場合](#raspbian-で-raspberry-pi-の-raspberry-pi-用カメラを利用する場合)通りに設定されているか確認してください。特に `max_video_width=2592 max_video_height=1944` が記載されていなければ高解像度時にフレームレートが出ません。

Raspberry Pi 専用カメラ利用時には `--use-native --force-i420` オプションを併用するとCPU使用率が下がりフレームレートが上がります。例えば、 Raspberry Pi Zero の場合には
### オプションを見直す

Raspberry Pi 用カメラ利用時には `--hw-mjpeg-decoder=true --force-i420` オプションを併用するとCPU使用率が下がりフレームレートが上がります。例えば、 Raspberry Pi Zero の場合には

```shell
$ ./momo --resolution=HD --force-i420 --use-native test
$ ./momo --resolution=HD --force-i420 --hw-mjpeg-decoder=true test
```

がリアルタイムでの最高解像度設定となります。

## Raspberry Pi で USB カメラ利用時に use-native を使ってもフレームレートが出ない

USB カメラ利用時には `--use-native` を使わない方がフレームレートは出ます。しかし `--use-native` を使ってCPU使用率を下げた状態で利用したい場合は /boot/config.txt の末尾に下記を追記してください
## USB カメラでパフォーマンスが出ない

### --hw-mjpeg-decoder

一部の MJPEG に対応した USBカメラを使用している場合、 `--hw-mjpeg-decoder` は ハードウェアによるビデオのリサイズ と MJPEG をハードウェアデコードします。

```shell
$ ./momo --hw-mjpeg-decoder true --no-audio-device test
```

### Raspberry Pi で USB カメラ利用時に --hw-mjpeg-decoder を使ってもフレームレートが出ない

USB カメラ利用時には `--hw-mjpeg-decoder` を使わない方がフレームレートは出ます。しかし `--hw-mjpeg-decoder` を使ってCPU使用率を下げた状態で利用したい場合は /boot/config.txt の末尾に下記を追記してください

```
gpu_mem=256
Expand Down
4 changes: 2 additions & 2 deletions doc/USE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

Ayame モードでは時雨堂が開発しているオープンソースのシグナリングサーバ [WebRTC Signaling Server Ayame](https://github.com/OpenAyame/ayame) を利用します。

[Ayame Lite](https://ayame-lite.shiguredo.jp/) を利用することで、 Ayame を用意することなく Ayame を試すことが可能です。
[Ayame Labo](https://ayame-labo.shiguredo.jp/) を利用することで、 Ayame を用意することなく Ayame を試すことが可能です。

[USE_AYAME.md](USE_AYAME.md) をお読みください。

Expand Down Expand Up @@ -87,7 +87,7 @@ Options:
--no-video-device Do not use video device
--no-audio-device Do not use audio device
--force-i420 Prefer I420 format for video capture (only on supported devices)
--use-native Perform MJPEG deoode and video resize by hardware acceleration (only on supported devices)
--hw-mjpeg-decoder Perform MJPEG deoode and video resize by hardware acceleration (only on supported devices)
--video-device TEXT Use the video device specified by an index or a name (use the first one if not specified)
--resolution TEXT Video resolution (one of QVGA, VGA, HD, FHD, 4K, or [WIDTH]x[HEIGHT])
--framerate INT:INT in [1 - 60]
Expand Down
Loading

0 comments on commit 5ae4500

Please sign in to comment.