PeerCastStation

P2P形式の動画ストリーミングソフトウェア

This project is maintained by kumaryu

新機能: FLVToMpegTSフィルタについて

バージョン2.3.6で追加されたFLV to MPEG-2 TSフィルタについて解説します。

何をする機能なのかと言いますと、FLV配信を視聴側でMPEG-2 TSに変換して視聴する機能です。 また、RTMPからMPEG-2 TSで配信することもできます。

何に使うのかもよくわからないうえに、まだ使い方が面倒という変な機能なのでここで解説します。

動作環境

PeerCastStationの2.3.6以降で使えます。

対応するFLVはH.264とAACが入ったもののみです。たぶんそれ以外のコーデックを入れたFLV配信はほぼ無いと思われますので、普通のFLV配信ならどれでも大丈夫と考えて良いでしょう。

FLVからMPEG-2 TSへの変換はコンテナの詰め替えのみ行います。中身の映像や音声データはそのままなので劣化は起きません。遅延は大きくはならないもののちょっとだけあるかもしれません。負荷もそれほど大きくないもののちょっとはあります。

何に使うの

何に使えるのか、何が嬉しいのかなんですが、あんまり嬉しいことはありません。

FLV配信の視聴が難しいけどMPEG-2 TSなら見れるのになぁという時に使えるんですが、どんな状況なんでしょうねそれ。

一応Windows 8以降だとWindows標準でH.264とAACが入ったMPEG-2 TSが見れるので、追加のインストールの必要無くWindows Media Playerで視聴することができます。 ただ、インターネットキャッシュに延々と動画を溜めていってしまうので一時的とはいえディスク容量を食い潰しますし、一度視聴が途切れるとキャッシュの最初(ずっと前の部分)から再度再生を始めてしまうのであまり実用的ではありません。

じゃあ何で作ったのかって話ですが、HTTP Live StreamingをするのにMPEG-2 TSにして細切れにする必要があったのでその途中段階として作りました。 でも他に何かに使えるかもしれないのでHTTP Live Streamingまで行かない状態で解放してあります。なんか良い使い道が思いついたら使ってみてください。

使い方

HTTP経由での視聴の場合

stream URLにパラメータで追加します。

http://127.0.0.1:7144/stream/[ここにチャンネルID]?tip=203.0.113.53:7144&filters=flvtots

こんな感じ。既にリレーつながっててtipが無い場合は

http://127.0.0.1:7144/stream/[ここにチャンネルID]?filters=flvtompegts

のようにしてください。

filtersパラメータには再生時のフィルタをカンマで区切って複数指定できます。今のところflvtotsフィルタしかないので1、一つだけ指定します。何も使わない場合はfiltersパラメータ自体入れないか空にしといてください。

あとはMPEG-2 TSがHTTPで流れてくるので、対応のプレイヤーで見てください。

RTMP経由での配信の場合

RTMP配信する時にFLVからMPEG-2 TSに変換して配信することができます。 YPにはMPEG-2 TS配信として載りますし、視聴する側も変換とか無しにMPEG-2 TSで視聴することになります。 いや、いいことなんて今のところ無いですよ?作れるから作ってみた実験機能です。

RTMP配信時のURLにパラメータを指定することで機能します。

rtmp://localhost/live/livestream?filters=flvtots

といった形式で、末尾に?filters=flvtotsを付けてください。

このパラメータはPeerCastStationで配信開始をする時のURLに付けるようにしてください。 OBSなどのエンコーダ側の配信先設定にはパラメータを付ける必要はないですし、付けても意味はありません。

上手くいくと配信のタイプがTSになります。

その他

今のところHTTP配信とHTTP Push配信では対応していません。近いうちに対応予定です。といってもHTTP経由でFLV配信なんかしないでしょうが……。

フィルタについて

HTTP Live Streamingで視聴するのにFLV→MPEG-2 TS変換を追加してみましたが、それより前後にフィルタをかませられるようになったというのが機能的には大きな進歩になります。

今のところフィルタはURLで指定なのでちょっと使うのが面倒ですが、複数追加できますしプラグインで追加可能ですので、今回入れたようなコンテナ変換だけでなく再エンコードを伴うコーデック変換を入れることも可能です。

プラグインでの追加方法は解説するのが大変なのでここでは書きませんが、気になる人はソースを見てみてください。

興味はあるけどさすがにプラグインを作るのは大変だなぁという人のためには、設定しといた外部コマンドを呼び出してフィルタにできるプラグインを近々追加する予定ですので、それが出来たら遊んでみるといいでしょう。

  1. 本当はデバッグ用の何もしないdummyフィルタてのがあるんですが、使っても何も起きません。