配信形式が RTMP から HLS に変わり同じアカウントで録画しながら配信を見ると片方が止まることがあるのでそれを回避する方法。今回はTSではなくライブ配信を対象とする。使用するツールは ffmpeg と ffplay で録画しながら tee プロトコルで UDP に配信している。別の配信を同時に配信する場合はポート番号の 8080 を変更する。

FFmpeg Formats Documentation : tee

ユーザー生放送のライブの RTMP はうまく受信できない。さらに HLS は直ぐにプレイリストにアクセスできなくなるのでコメントビューワを同時に起動して配信コメントを受信する。それでもアクセスできなくなり録画が中断することもあるし、セグメント欠けを起こすこともある。

HLS
ffmpeg -i "https://pb0528a2b77.dmc.nico/hlslive/ht2_nicolive/nicolive-hamster-lvXXXXXX_main_badfa6014ab3f4035be820bca7b38f89fbd4f3fde9125e29f761be998c0dc306/1/ts/playlist.m3u8?ht2_nicolive=123456.0k3c77_pkhzkh_29bc3k7rwlg4n" -vsync passthrough -frame_drop_threshold 4 -copytb 1 -map 0:0 -map 0:1 -flags +global_header -reset_timestamps 1 -c copy -f tee "[f=mpegts:onfail=ignore]udp://localhost:8080|[onfail=ignore]output1.ts"

RTMP
ffmpeg -i "rtmp://nlakmjpk.live.nicovideo.jp:1935/live/aqkv_yuwb_2@s191116?auth=dbEcbdkbCc3dnctd_azbnasawazcYaUcnaW-bCj2O9-frG-vga-xxyBFq_zACEmx&aifp=0191210" -vsync passthrough -frame_drop_threshold 4 -copytb 1 -map 0:0 -map 0:1 -flags +global_header -reset_timestamps 1 -c copy -f tee "[f=mpegts:onfail=ignore]udp://localhost:8081|[f=flv:onfail=ignore]output2.flv"

チャンネルの RTMP はパッチを当てないと配信が読み込めない
ffmpeg -f live_flv -i "rtmp://nlech01.live.nicovideo.jp:1935/onairliveedge/live_181229_20_5/lvXXXXXX live=1 nofcsub=1 conn=S:123456:lvXXXXXX:16:1546082569:150:20a71271e9a52178 cmdinv=nlPlayNotice cmdinvamf=S:rtmp://chnl03.ep.live.nicovideo.jp:1935/publicorigin/181229_18_1/ cmdinvamf=S:lvXXXXXX?:30:ee10e37a7d32862b cmdinvamf=S:lvXXXXXX cmdinvamf=N:-2" -vsync passthrough -frame_drop_threshold 4 -copytb 1 -map 0:0 -map 0:1 -flags +global_header -reset_timestamps 1 -c copy -f tee "[f=mpegts:onfail=ignore]udp://localhost:8082|[f=flv:onfail=ignore]output3.flv"

「Non-monotonous DTS in output stream」のエラーが出るので、-copytb 1を付けている。

パッチを当てた ffmpeg とコマンド例は以下を参照。
N を使わない新しいニコ生用の rtmpdump と ffmpeg(librtmp)
ニコ生の配信データを保存する rtmpdump のコマンド内容のまとめ

受信方法は ffplay で UDP を開く。VLC ではうまく開けない。
set SDL_AUDIODRIVER=directsound
ffplay -f mpegts udp://localhost:8080

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)