【カスタム出力 (FFmpeg)】YouTubeでHEVC配信試したら20秒くらい遅延したので諦めた

追記: 28.0 Beta 1でOBS本体がHLS対応したので試したら、遅延5秒~10秒程度で済みました。

遅延の原因はHLSらしいけど、RTMPはHEVC非対応なので仕方ないね。最初15秒遅延くらいだったので、一旦配信止まった時にLiveまで追い付けてない気がした。

  1. ストリームキーを作成する。YouTubeライブ配信を開始→ライブ配信の設定→新しいストリームキーを作成 へ進む。ストリーミングプロトコルでHLS(高度)を選択、名前を適当に入れて作成。*1
  2. OBSをインストールする。↓のFFVCustom=preset=p7のように新形式プリセットを使うならGuide OBS Studio FFmpeg Upgrade · Xaymar/obs-StreamFX Wiki · GitHubを参考に差し替える(か自前ビルドする)。
  3. 録画タブを↓のように設定する。
[AdvOut]
TrackIndex=1
RecType=FFmpeg
RecTracks=1
FLVTrack=1
FFOutputToFile=false
FFURL=https://a.upload.youtube.com/http_upload_hls?cid=****-****-****-****-****&copy=0&file=playlist.m3u8
FFFormat=hls
FFFormatMimeType=
FFExtension=m3u8
FFIgnoreCompat=true
FFVEncoderId=173
FFVEncoder=hevc_nvenc
FFVCustom=preset=p7
FFABitrate=64
FFAEncoderId=86018
FFAEncoder=aac
FFAudioMixes=1
FFVGOPSize=60
FFACustom=
FFVBitrate=2000

FFURLは1で生成したストリームURLをコピペして末尾にplaylist.m3u8を付け足した奴。 もっと設定値あるけど、一旦デフォルトを尊重した。他の設定例は↓

以上。

上記のカスタム出力(FFmpeg)でURLを指定する方法以外に

  1. obs-tsukasaを入れる。*2
  2. UI/window-basic-settings.cppのconst char* streaming_codecs[]の//"hevc"のコメントアウトを解除してビルドする。*3

がありそうに思ったけど、1は「ストリームの状態 データなし」のままで使えず、2はビルド通らず、諦めた。

妥協案

そもそもは楽天モバイルを固定回線化する - 雑記光回線捨ててアップロード帯域が細くなった後でも高画質で配信したかった…1080pは静止画だと綺麗だけど、動きが激しい時のブロックノイズが酷い。

配信
配信は、FFmpeg差し替えるのが怠くなったので(new)の奴。1888kbpsは自動構成ウィザード結果を綺麗にした。
録画
録画は、https://developer-blogs.nvidia.com/wp-content/uploads/2020/07/jockey-video-codec-sdk-9-1-1.pngだとslowが一番重そうなので選択。CQPが良いらしいので文字が潰れない程度に34選択。他は既定を尊重。
映像
ケチって24FPS。音声64kbps。

蛇足だけど、

*1:アカウント接続はRTMPのキーを生成してるのか使えなかった

*2:【OBS】Open Broadcaster Software Part.9

*3:UI, obs-ffmpeg: Add support for other codecs by Xaymar · Pull Request #794 · obsproject/obs-studio · GitHubが当該コミット。最初StreamFXが隠してるのかと思ったけどAMF/NVENC H.265 (via FFmpeg) for Streaming on YouTube · Issue #627 · Xaymar/obs-StreamFX · GitHubプラグイン側でUIを弄るのは無理と知った。Discordで「Darkerium — 2021/09/15 But because it could confuse those who stream on other platforms, which don't support H.265, it should be visible only when YouTube is selected (or any other platform which supports it for that matter). Correct, but YouTube supports HLS as well, which allows for H.265.」「Matt | WizardCM — 2021/09/15 yeah we currently don't want too much youtube-specific code everywhere」というやり取りがあったので正式対応は相当先っぽい。