Ticket #37111

ストリームタイプ拡張アトムのついた配信を正常にリレーできない

Open Date: 2017-04-08 01:58 Last Update: 2017-04-08 01:58

Reporter:
Owner:
(None)
Type:
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
1

Details

IM50版以降がリレーしている配信を、IM版などのPeerCastで視聴することができないことがあります。 リレー接続時の最初のパケットの構造がおかしく、ヘッダーパケットや、トラック情報を受け取ることができません。

リレー接続直後に送信される PCP_CHAN パケットは、チャンネル情報やヘッダーパケットを含んでいますが、このパケットの構造が(FLV視聴・リレーパッチを取り込んだ)IM50版以降変わっています。

従来、PCP_CHAN は4つの子アトムを持っていて、PCP_CHAN_INFO には7つか、PPFLAGS がある場合には 8 つの子アトムが入っていました。

    PCP_CHAN { // count=4
      PCP_CHAN_ID
      PCP_CHAN_INFO { ... } // count=7~8
      PCP_CHAN_TRACK { ... }
      PCP_CHAN_PKT { ... } // ヘッダーパケット
    }

IM50 で追加された PCP_CHAN_INFO_STREAMTYPE と PCP_CHAN_INFO_STREAMEXT は、PCP_CHAN_INFO に入って、総計は最大で 10 になるはずなのですが、8 までしか上がらないために、PCP_CHAN_INFO の外に押し出されてしまいます。典型的には以下のようになります。

    PCP_CHAN { // count=4
      PCP_CHAN_ID
      PCP_CHAN_INFO { // count=7
        PCP_CHAN_INFO_NAME
        PCP_CHAN_INFO_BITRATE
        PCP_CHAN_INFO_GENRE
        PCP_CHAN_INFO_URL
        PCP_CHAN_INFO_DESC
        PCP_CHAN_INFO_COMMENT
        PCP_CHAN_INFO_TYPE
      }
      PCP_CHAN_INFO_STREAMTYPE // CHAN_INFO の外に出てしまう
      PCP_CHAN_INFO_STREAMEXT
    }
    PCP_CHAN_TRACK { ... } // CHAN の外に出てしまう
    PCP_CHAN_PKT { ... } // ヘッダーパケット

このようなデータを受けとると IM51-2 は以下のようなログを出し、HTML UI のチャンネル情報ページの Head の行には 0 (0 bytes) と表示されます。

Sat Apr 08 01:03:12 2017 [CHAN] Channel is PCP
Sat Apr 08 01:03:12 2017 [CHAN] PCP skip: trck
Sat Apr 08 01:03:12 2017 [CHAN] PCP skip: pkt

なお、PeerCastStation は PCP_CHAN アトムの階層構造は無視してパースしているようで、IM50 以降の下に付いても視聴できました。

channel.cpp の ChanInfo::writeInfoAtoms() で、送信する PCP_CHAN_INFO_STREAMTYPE と PCP_CHAN_INFO_STREAMEXT がある場合は PCP_CHAN_INFO の子アトムのカウントを増やせば良いかと思います。

Ticket History (2/2 Histories)

2017-04-08 01:58 Updated by: plonk
  • New Ticket "ストリームタイプ拡張アトムのついた配信を正常にリレーできない" created

Attachment File List

  • im.png(66KB)
    • チャンネル情報ページのスクリーンショット

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login