ニコ生とブラウザ間の通信

準備

通信の様子

  1. ニコニコにログイン
  2. 動画情報をゲットし動画サーバとメッセージサーバにTCPSockで接続
  3. Handshake
    1. ブラウザからサーバに対して'0x03'に続けて1536Bytesのダミーデータを送信
    2. サーバから3073Bytesのダミーデータを受信
    3. サーバに対して1536Bytesのダミーデータを送信
  4. connect()
    • 引数の文字の部分以外はキャプチャしたバイト列をそのまま利用
    • サーバからresult()が返ってくる
    • 以降はRTMPのヘッダに応じて処理
    • rtmp.rb
  5. createStream()
    • 引数については上記同様
    • サーバからresult()が返ってくる
  6. receiveVideoAudioPlay()?
    • onStatus()が返ってくる
  7. あとはvideo_dataやらaudio_dataで送られてきたデータを保存
    • あとはqualityIncrement()も呼ばれるが何も処理せずresult()を返している

TODOやらFIXMEやら

  • どういう値を返せばいいのか分からないのがqualityDecrement()
    • 出現頻度がレアなので今のところパケットキャプチャできていない
  • 現状のプログラムはよく録画が止まったりthreadが終了しなかったりとバグだらけな模様
    • とりあえず何がおこっているのかキャプチャしてバグ取りしていきたい
  • あとは壊れたFLV?が生成される点も修正したい