オリジナルポストカードは”こちら”で好評発売中!

NDI、ハードウェアエンコード、RTMP、FFmpeg、仮想オーディオ等配信雑記

試行錯誤中にもう少し深掘りしておきたかったことを徒然に。

 IP化? IP伝送方式?

いくつかのサイトを参考にしながらのまとめ。
表現やカテゴリ分けは適切でないかもしれないので、参考サイトを参照ください。

放送用信号
従来の放送用ネットワーク
IPビデオ伝送方式
ケーブル同軸ケーブル
HD-SDI (1.5Gbps)、3G-SDI、12G-SDI
LANケーブル
通信1本のケーブルで1チャンネル1方向複数のチャンネルを多重化、双方向
同期BB (Black Burst) 信号NTP(Network Time Protcol)
PTP (Precision Time Protocol) 時刻/周波数同期
SMPTE ST 2059:I同期に関する規格
データビデオ、オーディオ、アンシラリデータなどの
決まったデータ
画像、音声、付加情報、制御情報、
時刻同期情報、前方誤り訂正(FEC)
機材映像専用機材
(VTR、カメラ、スイッチャー)
汎用の IP ネットワーク機材
(ルーターやスイッチなど)
規格SDI、AESNDI、AIMS

参考:
NDI~ 進む映像伝送の IP 化 ~
放送システムが IP 化される!?(2019)
映像制作/伝送分野のIP化とPTP(SMPTE ST 2059)(2017)
放送用信号(SDIやAES等)をIP化するゲートウェイ(2020/2021)

映像配信技術の基礎(2012)
番組制作のための光・IP伝送技術の研究開発動向(2020)

SDIとNDIとの違いは大体概要がつかめた気がする。

 NDIは引き続き試したい

詳しい話は抜きにして、自分用に言葉のポイントを整理。
パンダスタジオの方の解説は、その言葉に含まれる潜在的な意味も言葉にしながら説明してくれるので助かります。

ソフトウェアベース:ハードウェアには依存しない。→解像度、フレームレートに依存しない。
双方向通信:すべてのソースが送信元であり、同時に宛先になる。
DCT圧縮・低遅延:圧縮という操作が入るにもかかわらず、低遅延。
マルチキャストDNS機能:同じネットワークに繋ぐとPCで見つかるのはこの機能があるからなのですね。


参考:
NDI® – NDI Central (tricaster.jp)
NDIについて調べてみた(2018)
NDIってなに?LANケーブルで映像データを送る方式 NDIについて学んでみよう(2021)
IPビデオ伝送の筆頭格、NDIを知る。〜ソフトウェアベースでハンドリングする先進のIP伝送〜(2021)

今後の参考:
【2PC配信のやり方】キャプチャボード不要!NDIソフトを使ったOBS設定方法(2019/2020)


月イチ15分配信Vol.1では、NDIで接続したら、LANケーブルを使わずにワイヤレスで出来たけど、ただPCに送るだけなら、Wi-Fiと変わらないのかな。圧縮率の違い?
カメラとの接続というより、今後のAdobe製品との連携を試したいのもあってNDIは知っておきたいところですが、ここからはWi-Fiも調べないと進まないので、NDIの話題は一旦保留。

 ハードウェアエンコード? エンコーダの種類

エンコード(映像の圧縮工程)
高解像度を選択するほど、CPUを使う。速いプリセットにするほど、CPUの使用量が減り、ビデオ品質は低下する。

レンダリング(エフェクトなどの計算処理)
高いフレームレートでフレームをキャプチャする場合、ストリーミングしているビデオをGPUがレンダリングできない可能性が出てくる。

GPUチップ
CPUやマザーボード内蔵もあるので、グラフィックカードが無くてもハードウェアエンコードが出来る場合がある。

ソフトウエアエンコード、libx264:CPUでエンコード
ハードウェアエンコード、H.264:GPUに搭載された専用の回路でエンコード。GPUに搭載のNVENC(Nvidia)、Quick Sync Video(Intel)、AMF(AMD Advanced Media Frameworkライブラリ)(AMD)などの x264 以外のエンコーダを使用する。x264 よりも低い品質のビデオを配信するため、CPU への負荷が少ない。

ハードウェアエンコーディング対応(画像処理用のハードウェア・アクセラレータ)

  • NVENC:NVIDIA製GTX600番台以降のGPU
  • QuickSync:第二世代 Intel Core CPU以降の内蔵 GPUに搭載
  • H264/AVC(VCE):AMD製GPU/CPU内蔵GPU  
    AVC:Advanced Video Coding 動画圧縮規格、VCE:H.264エンコードを含むライブラリ)
メーカーによる違いだったのか。 

参考:
MacでOBS配信をする時はハードウェアエンコーダがおすすめ、というよりベストです (2018)
【配信者さん向け】超簡単!低負荷で高画質な配信をしよう!配信設定教えます!(2019)Windows&YouTube
macbook pro ハードウェアアクセラレーションはサポートされていません と表示されてしまいます(2020)
ハードウェアエンコーディングに悩む方が知っておきたい5項目(2021)Premiere Pro/Windows&YouTube
OBSエンコーダーの高負荷で動作が重くなる場合の対処法(2021)
OBS Encoding Overloaded? Here are 9 Methods to Fix It (partitionwizard.com)

 サーバーURL 

参考に見ていた解説動画では、ハードウェアエンコードをするときに、「録画」から配信していたので、何故かと思っていましたが、AMDもそのようだけど「録画」側のプルダウンだけにしか出ない選択肢があるのですね。「録画」からFFmpegでh264_vidotoolboxというものを選んでいる。一般的に「録画」の方が「配信」より良いエンコーダが選べるということかな。

動画はYouTubeへの配信を解説していたので、「ファイルパスまたはURL」で、ストリームキーの前に張り付けていたパスが、facebookの場合はどこにあるのか探したら、facebookの詳細設定で見つけました。サーバー URLという項目でした。


参考:
【完全版】Mac版のOBSの設定をインストールから徹底解説!(2021動画)Mac&YouTube
DELL XPS 9575(i7/8705G)でOBS Studioのエンコードハードウェア支援VCEを使う

今後の参考:
macOS と FFmpeg 4.3 で VideoToolbox による HEVC/H.265, H.264 ハードウェアエンコード
ライブ配信のキモである“エンコーダ”について考える【導入編】

これがかのRTMPでのストリーミング? 試しに、サーバURLとストリームキーを繋げてfacebookでやってみたら、Invalid argumentと出てエラーになったので、ここは一旦保留。

 Facebookのガイドラインのオプションを参照

先ずは、というか今更ながら、facebookのガイドラインの設定オプションを参照。

動画オプション:

  • 解像度: 1080p (1920 x 1080)
  • フレーム/秒: 30 fps
  • ビットレート範囲: 3,000〜6,000 Kbps
  • キーフレーム: 2秒
  • 動画コーデック: H.264、レベル4.1
  • 8時間の時間制限

音声オプション:

  • サンプルレート: 44.1 kHz
  • チャンネルレイアウト: ステレオ
  • ビットレート: 128 Kbps

引用元:
Facebookでのライブストリーミングに使用できる動画フォーマットに関するガイドライン
参考:
Facebookと連携するようにストリーミングソフトウェアを設定するには、どうすればよいですか。

自分用に言葉の整理。
 OBS:ストリーミングソフトウェア。エンコードソフトウェアとも言う。
 カスタムストリーミングサーバーまたはRTMPサーバーを指定して、コピーしたサーバーURLやストリームキーを入力する。

その他参考:
Streaming with x264
MacBook Pro (Retina, 13-inch, Early 2015)からOBS Studioでライブ配信する際の最適パラメータを探求してみた
OBS Facebook Liveの配信と設定 | よくあるご質問と回答# | JUNS(ジュンズ)(2019?)
【Facebook Live】OBS Studioを使ってライブ配信の動画をリッチにする方法 (webmobile.net)(2020)
OBS StudioでFacebookからライブ配信してみよう – Windowsパソコン 使えるツール&テクニック (flyingjunk.net)(2021)

 次回設定メモ(エンコード)

次回は、「配信」からの配信で、ハードウェアエンコードでやってみようと思います。音声はまた別の話ですが、テストで繋いで見た限りは問題なさそう。

Video 1920×1080/Bicubic/29.97 / Output Streaming 6ch/Apple VT H264 hardware Encoder/5000/Limit bitrate/5000/1.0/2/(None)/Use B-Frames
参考:OBS Studio VT h264 Hardware Encoder on macOS — It Finally Works for Live Streams

 名前だけは知ってるRTMP

いくつか検索して出てきたfacebook Liveの解説の画面が、自分のアカウントで見ている画面と違うのですが、その難しそうな画面は、Facebook Live APIを使用してのライブストリーミングの画面というもののようです。

今後の参考1:
ストリーミングソフトウェアを使用してFacebookでライブ配信をするにはどうすればよいですか。
ライブRTMP出力を使用してFacebookとYouTubeにストリーミング
ライブ動画API(Facebook Live APIを使用してライブストリーミング)

この配信試行錯誤の過程で、何度か遭遇したので、名前だけは知っているRTMPですが、まだそこに辿り着くまでに至っていないところ。ハードウェアエンコードからのこのRTMPへの流れも、今後ステップを踏みながら理解を深めようということで、今回は参考サイトを集めるところまで。

今後の参考2:
RTMPの2021年以降の話 ~ Adobe Flash以外の動画配信での使われ方
RTMP ストリーミング: The Real-Time Messaging Protocol について解説します

 FFmpegを調べたら、とても便利そうなソフトが出てきた。それがFFmpegなのですが。

ハードウェアエンコードで「録画」から配信する方法で選択していた「カスタム出力(FFmpeg)」。
調べてみたら、覚えたら凄く便利そう。これはまた近いうちにサイトを参考にしながら、動画編集を試してみたいと思います。

FFmpeg:コマンドラインで使用する動画と音声を記録・変換・再生(動画や音声をエンコード?)するためのオープンソースのソフトウェア


今後の参考:
【初心者講座】FFmpegの使い方:動画結合・切り出し・ダウンロード・圧縮・分割・音声抽出・字幕/無音追加
FFmpegでよく使う例、コーデックをまとめてみた(2021年版)


 仮想オーディオ? 仮想音声デバイスを経由してOBSに音声を入力

OBSのMac版ではデフォルトではディスクトップ音声(内部音声/システムサウンド)を出せないので、仮想オーディオプラグイン&アプリで、仮想のオーディオ入出力装置を作成するのだそうです。

最初に見ていた動画では、Background Musicというのを使っていたので先ずこれからダウンロード。他にも定番?があるらしい。

参考:
Macの配信のための音声設定 – KILINBOX(2021)BlackHole(+LadioCast:音声ルーティング)
Macで画面録画はこれで決まり(内部音声もバッチリ録れる)(2021)Background Music

最初にBackgroundMusic-0.3.2.pkgをダウンロードして、色々試してみたけど音が聞こえてこなかったので、macOS Montereyだけど、0.4.0なのかなと一瞬思いましたが、日を改めて0.3.2のままで試してみたら、音が鳴った。設定が良くなかったらしい。


今後の参考:
【OBS Studio】Macでディスクトップ音声を出力する方法(2021)SoundFlower+LadioCast
macOS 11 Big Sur&Apple Silicon対応の仮想オーディオプラグイン「GroundControl Cube」(2021)+LadioCast
OBSでMacのディスクトップ音声を出力させる方法とその設定(2020)SoundFlower(2ch)+LadioCast
Mac OBS Studioでデスクトップ音声を出力する(2020)SoundFlower+LadioCast

OBSのチャンネルやMacのオーディオ設定の兼ね合いの理解が足りないのに加え、3つの音源(カメラ、Macで再生する動画、OBSにウィンドウキャプチャしたサイトの音源)の切り替えをどうすればスムーズに行くか、スイッチャーなどを使わずMac1台とソフトなどでいけるか、ヘッドホンで音をチェックする場合はそれぞれどう設定するか、などその辺をクリアにしていきたいと思います。
GroundControlも試したいですが、Loopbackだとその辺り、もっとわかりやすいのかな。

<自分メモ>
iPadをライトニングケーブルで画面キャプチャを試す。
参考:MacでOBS配信をする時はハードウェアエンコーダがおすすめ、というよりベストです
Bitrate per Resolution
MicroSD Card Recording Capacity