xtne6f / jkcnsl

ニコ生のコメントなどを取得する非公式ツール
MIT License
3 stars 2 forks source link

[提案] ニコ生の視聴セッションのstartWatchingにおけるStreamオプションの削除 #1

Closed noriokun4649 closed 3 years ago

noriokun4649 commented 3 years ago

はじめまして僭越ながら提案させていただきます。

視聴セッションについてなのですが、現状だとstartWatchingのメッセージを送信する際にstreamのオプションを付けていると思います。 この場合ですと、ニコニコ側で放送の映像のエンコードが行われる状態になってしまいます。そのため、コメント投稿やコメントセッションへのUriを取得するなどの用途で映像が必要ないのであればstreamオプションは有効にしない方が良いかと思います。

以上僭越ながら提案させていただきます。ご検討お願いします。

xtne6f commented 3 years ago

ありがとうございます。

視聴セッション開始時に送信するjsonについてはとくにポリシーはなくて、ニコ生の通信内容を開発者ツールでトレースしたものです。なので、実際のところ「ニコニコ側で放送の映像のエンコードが行われる状態になって」いるのかどうか外部から伺い知ることができないです(配信者視点だとなにか違いがあったりする?)。 もし、ニコニコ側がこのオプションの指定を推奨していないなど何か事情があったり、余計なデータが送られるなどデメリットがあるならそのようにしたいですが、勝手アプリという都合、本家の仕様がかわった場合に機敏に動きたいこともあり、できれば放置したいように思いますがどうでしょうか。

noriokun4649 commented 3 years ago

なので、実際のところ「ニコニコ側で放送の映像のエンコードが行われる状態になって」いるのかどうか外部から伺い知ることができないです

実際の挙動としてはstartWatching送信後のサーバからのレスポンスとしてstreamメッセージが送られてきており、そこでHLSのストリームURIが通知されてます。

もし、ニコニコ側がこのオプションの指定を推奨していないなど何か事情があったり、余計なデータが送られるなどデメリットがあるならそのようにしたいですが

ニコニコ側でも「ニコ生ワークショップ」にて公開されているニコ生のWebSocket API 外部向け資料において負荷低減のため映像が必要ない場合は省略するように書かれております。

機敏に動きたいとのことなので「ニコ生ワークショップ」に参加されるのもよいかと思います。ニコニコ的にも周辺ツール開発者と連絡が取れる状態にしたいらしいので。 https://twitter.com/nico_nico_talk/status/1351448521409368064?s=20 ニコ生ワークショップについては上記Twitterを参考にしてください。

xtne6f commented 3 years ago

機敏に動きたいとのことなので「ニコ生ワークショップ」に参加されるのもよいかと思います。ニコニコ的にも周辺ツール開発者と連絡が取れる状態にしたいらしいので。

ありがとうございます。ニコ窓担当のツイートはROMってはいるのですが、しかし自分はtwitterやらないので今のところ連絡手段がなく蚊帳の外でいこうと思います。(どうしようもなくなったら考える!)

件の外部向け資料については風のうわさでなんとなく流れてきているのですが、startWatchingについては概要とサンプルの記述はあるのですが、省略するように、あるいは省略してもよい旨の記述を探しだせなかったです。 ただ、タイムスタンプが21年2月中旬の資料なので、その後追加や更新がされたかもしれません。

実際の挙動としてはstartWatching送信後のサーバからのレスポンスとしてstreamメッセージが送られてきており、そこでHLSのストリームURIが通知されてます。

そう、たしかに違いはstreamメッセージの受信の有無のようですね。

{"type":"stream","data":{"uri":"https://***.dmc.nico/hlslive/ht2_nicolive/nicolive-production-***/master.m3u8?ht2_nicolive=XXX","syncUri":"https://***.dmc.nico/hlslive/ht2_nicolive/nicolive-production-***/stream_sync.json?ht2_nicolive=XXX","quality":"high","availableQualities":["abr","high","normal","low","super_low","audio_high"],"protocol":"hls"}}

こういうメッセージなんですが、2度目の接続でもクエリ(XXX)以外の文字列は同じなので、ニコニコ側でなんらかのリソースを個別に準備している感じではないなぁ…と勝手に想像しています。変更に踏み切るにはまだちょっと動機が弱い…

noriokun4649 commented 3 years ago

しかし自分はtwitterやらないので今のところ連絡手段がなく蚊帳の外でいこうと思います。

確かに、連絡手段がTwitterだけなのは利用してない方からしたら入りにくいですね......実際はSlackでやり取りしてるのでWebフォームから受付とかしてくれるとよさそう。

タイムスタンプが21年2月中旬の資料なので、その後追加や更新がされたかもしれません。

そうですね。今年の4月12日にAPIが仕様変更されstreamがオプションになり件の注意書きが追加されました。

変更に踏み切るにはまだちょっと動機が弱い…

でしたらそのままでよいと思います。私も強制する気はないので。

xtne6f commented 3 years ago

そうですね。今年の4月12日にAPIが仕様変更されstreamがオプションになり件の注意書きが追加されました。

ありがとうございます。この情報が決め手になります。streamフィールド撤去の方向でいこうと思います。

例の資料はニコニコの内部資料から外部に出せるものをコピペしたような体裁だったので、随時更新されそうな雰囲気ではありましたが、更新されていたんですね。

確かに、連絡手段がTwitterだけなのは利用してない方からしたら入りにくいですね......実際はSlackでやり取りしてるのでWebフォームから受付とかしてくれるとよさそう。

これのためだけにtwitterアカウントとるかといえば…。しばらくはスパイ活動?で乗り切ります。

xtne6f commented 3 years ago

さきほどNicoJKのリリースに合わせてjkcnslの同梱バイナリを現行masterに差し替えました。 ありがとうございました。