Archive
Linux 64bit 版で動作する PeerCast QT をコンパイルする
概要
64bit版Linuxで動作する PeerCast QT バイナリの作りかたです。
作り方
まずは下記サイトからPeerCast QTのソースコードを取得します。
PeerCast QT
$ wget 'http://mosax.sakura.ne.jp/yp4g/fswiki.cgi?page=PeerCast+Qt'
64bit環境でコンパイルできるようにファイルを修正します。 変更点は以下の通り。
$ git diff diff --git a/core/common/ogg.h b/core/common/ogg.h index cc49dea..fba7a4e 100644 --- a/core/common/ogg.h +++ b/core/common/ogg.h @@ -19,7 +19,7 @@ #ifndef _OGG_H #define _OGG_H - +#include <sys/types.h> #include "channel.h" // ---------------------------------------------- class OggPage; diff --git a/core/common/sys.h b/core/common/sys.h index 3cd7428..e41cb06 100644 --- a/core/common/sys.h +++ b/core/common/sys.h @@ -335,7 +335,7 @@ public: //#define _BIG_ENDIAN 1 // qt #endif -typedef long long int64_t; +//typedef long long int64_t; typedef int (*THREAD_FUNC)(ThreadInfo *); #define THREAD_PROC int
peercast/ui/linux へ移動して make します。
$ cd peercast/ui/linux $ make $ make install $ sudo cp peercast /usr/local/bin
完成!
備考
PeerCastQT開発者さんのサイトはすでに新サイトに移転されているようですが、新サイトではPeerCastQTが公開されていません。消えてしまうと困るのでgithubに野良リポジトリを作りました。
GistにPeerCastの起動スクリプトもおいておきます。
PeerCastを使わずにYPのポートチェックをパスする方法
概要
iPhoneなどPeerCastが動作しない環境でもYPのチャンネルリストを取得できたら便利だなーと思ったのでやり方を調べてみました。
YPの仕様を把握する
まずはYPの仕様を把握します。KP、CP、TPなど、日本でメジャーなYPは YP4G というオープンソースソフトウェアを土台にしているようです。同サイトでソースコードが配布されているのでダウンロードします。
ダウンロードしたファイルを展開するとyp4gというディレクトリにソースコード一式が作成されます。どうやらPHPで書かれたプログラムのようです。ポートチェック処理はsocketを使って通信していると思われるので、PHPのsocket関数であるfsockopenでプロジェクトを検索します。
検索したところ、yp4g/reload/util.php にそれっぽい処理が記述されているのがみつかりました。
yp4g/reload/util.php
if($use_pcp)
{
$fp = @fsockopen($addr, $port, $errno, $errstr, $timeout);
if($fp)
{
stream_set_timeout($fp, 1);
fwrite($fp, "\x70\x63\x70\x0a\x04\x00\x00\x00\x01\x00\x00\x00\x68\x65\x6c\x6f\x00\x00\x00\x80");
$id = fread($fp, 4);
fclose($fp);
if($id == "oleh")
return true;
else
return false;
}else
return false;
}
socketを開いて「\x70\x63\x70\x0a\x04\x00\x00\x00\x01\x00\x00\x00\x68\x65\x6c\x6f\x00\x00\x00\x80」という文字列を送信し、レスポンスの先頭が「oleh」という文字列ならチェックが成功するようです。
Rubyを使って仕様を確かめる
PeerCastが実際に調べた通りの動作をしているかRubyを使って確かめてみます。pry(irb)を起動して下記のスクリプトを実行します。(PeerCast本体を起動しておいてください)
pry(main)> require 'socket' => false pry(main)> s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) => #<Socket:fd 5> pry(main)> sockaddr = Socket.sockaddr_in(7144, '127.0.0.1') => "\x10\x02\e\xE8\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00" pry(main)> s.connect(sockaddr) => 0 pry(main)> s.write "\x70\x63\x70\x0a\x04\x00\x00\x00\x01\x00\x00\x00\x68\x65\x6c\x6f\x00\x00\x00\x80\r\n" => 22 pry(main)> s.recv(1024) => "oleh\x05\x00\x00\x80agnt\x10\x00\x00\x00PeerCast/0.1217\x00sid\x00\x10\x00\x00\x00\x00]\xF2ug\x9CF\xF3\xEE\x93P>Y\xD4\x90tver\x00\x04\x00\x00\x00\xC1\x04\x00\x00rip\x00\x04\x00\x00\x00\x01\x00\x00\x7Fport\x02\x00\x00\x00\x00\x00quit\x04\x00\x00\x00\xED\x03\x00\x00" pry(main)> s.close => nil
「oleh・・・」というデータが返ってきました。 期待通りの動作をしているようです!
Mac OSX Lion で IPv6 を無効にする
余談になりますが、Mac OSX Lion で IPv6 を無効にする方法を調べたのでメモしておきます。
Mac OSX Lion はデフォルトでIPv6が有効になっていますが、上記RubyスクリプトはIPv6環境では動作しないため、なんらかの対応をする必要があります。RubyにはIPv6対応のSocket APIが存在し、そちらを使うと言う手もあるのですが、面倒そうなので今回はスルーします。単純にOSのIPv6サポートを無効にして対処したいところですが、Mac OSX Lionは環境設定からはIPv6を無効にできなくなったようで、コマンドラインから設定を変更する必要がありました。
Mac OSX Lion で IPv6 を無効にするには、下記コマンドを実行してください。
$ sudo networksetup -setv6off Wi-Fi
iPhoneでsocket通信する
YPの仕様が把握できたので、iPhoneでsocket通信を行う処理を書いていきます。
Cocoaでsocket通信を行うには roustem/AsyncSocket というライブラリを使うのが簡単です。「AsyncSocket.h」と「AsyncSocket.m」をプロジェクトにコピーし、「#import “AsyncSocket.h”」するだけで使えるようになります。AsyncSocketの使い方はライブラリに含まれているEchoサーバのサンプルコードが参考になりました。
とりあえずYPのポートチェックが通ったコードをおいておきます。
YPStub.h
#import <Foundation/Foundation.h>
#import "AsyncSocket.h"
@interface YPStub : NSObject{
AsyncSocket *_listenSocket;
NSMutableArray *_connectedSockets;
}
@property (nonatomic, strong) AsyncSocket *listenSocket;
@property (nonatomic, strong) NSMutableArray *connectedSockets;
- (void)start;
- (void)stop;
@end
YPStub.m
#import "YPStub.h"
@implementation YPStub
@synthesize listenSocket = _listenSocket;
@synthesize connectedSockets = _connectedSockets;
- (id)init {
if((self = [super init])) {
self.listenSocket = [[AsyncSocket alloc] initWithDelegate:self];
[self.listenSocket setRunLoopModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
self.connectedSockets = [[NSMutableArray alloc] initWithCapacity:1];
}
return self;
}
- (void)start {
if(![self.listenSocket acceptOnPort:7144 error:nil]) {
return;
}
}
- (void)stop {
for(NSUInteger i = 0; i < [self.connectedSockets count]; i++) {
[[self.connectedSockets objectAtIndex:i] disconnect];
}
[self.listenSocket disconnect];
}
////////////////////////////////////////////////////////////////////////////////
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket {
NSLOG(@"");
[self.connectedSockets addObject:newSocket];
}
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
NSLOG(@"%@:%hu",host, port);
[sock readDataToData:[AsyncSocket ZeroData] withTimeout:1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag {
NSLOG(@"");
if(tag == 1) {
[sock readDataToData:[AsyncSocket CRLFData] withTimeout:1 tag:0];
}
else if(tag == 2) {
[sock disconnect];
}
}
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSLOG(@"");
NSString *message = @"oleh\r\n";
NSData *messageData = [message dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:messageData withTimeout:1 tag:2];
}
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err {
NSLOG(@"%@:%hu",[sock connectedHost], [sock connectedPort]);
}
- (void)onSocketDidDisconnect:(AsyncSocket *)sock {
NSLOG(@"");
[self.connectedSockets removeObject:sock];
}
@end
アプリにUIWebViewなどを追加して、TPのページを開いてみてください。ポートチェックにパスしているのが確認できると思います。
iPhoneからPeerCast配信をリアルタイム視聴するためのソリューションまとめ
iPhoneからPeerCastをリアルタイム視聴するためのソリューションが複数でてきたのでまとめ。 対象アプリは次の3つ。
- iCastServer
- PecaMatic
- MP
全てのアプリで配信の視聴には自宅PCへのサーバソフトウェアのインストールが必要となる。
iCastServer
作者: 綾瀬宏美さん アプリプラットフォーム: Web サーバプラットフォーム: Windows 配信視聴に必要な外部アプリ: VLC 1.2以降(現状Nightly Build版のみ存在)
いいところ
導入一番簡単。 jQuery Mobileを使った奇麗なインターフェース。 サーバソフトウェアがタスクトレイに常駐するので邪魔にならない。
わるいところ
jQuery Mobileの動作がちょっと重たく、一度に表示できるチャンネル数が少ない。 サーバ側エンコーダのプロセス管理を手動で行わないといけない。
こんな人におすすめ
PCスキルがそれほど高くない人 軽快な動作や多機能さよりも奇麗なインターフェースを求める人 軽くチャンネルチェックできればいいようなライトなPeerCastユーザ
PecaMatic
作者: 塩化かにみそさん アプリプラットフォーム: ネイティブ サーバプラットフォーム: Windows 配信視聴に必要な外部アプリ: Peca2iPhone, ffmpeg
いいところ
ネイティブアプリなので動作が軽く、検索機能や掲示板の表示機能など多機能。
わるいところ
Peca2iPhone(サーバソフトウェア)導入の敷居がやや高い。 サーバがタスクバーに常駐するので邪魔になる。
こんな人におすすめ
特定のチャンネルをチェックしたり、チャンネルをがっつり楽しみたいPeerCastヘビーユーザ ビジュアル面よりも動作の軽快さを重視する人
MP
作者: cohakimさん アプリプラットフォーム: ネイティブ サーバプラットフォーム: Mac 配信視聴に必要な外部アプリ: PeCaServerPackage, ffmpeg
いいところ
唯一のMac対応。 チャンネル情報の取得だけなら自宅サーバが不要。
わるいところ
配信視聴のためのハードルが一番高い。
こんな人におすすめ
マカーで配信を視聴したい人 チャンネル情報のチェックだけできればいい人
スクリーンショット
iCastServer

PecaMatic

MP

PeerCastの視聴環境についてアンケートをとってみた
概要
開発の参考にするためにとったPeerCast視聴環境のアンケートとその結果です
アンケート: http://t.co/LrXNtcN 結果: http://t.co/msdBpLd
fedora に PeerCast VP をインストールする
概要
ないと思っていたLinux版PeerCast-VPが普通にあったのでインストールした PeerCast QTのソースコード中にlnixのCUI版がありました
手順
ソースコードをダウンロードしてビルド
$ wget 'http://mosax.sakura.ne.jp/fswiki.cgi?action=ATTACH&page=PeerCast+Qt&file=peercast%2Dqt0014%2Etar%2Egz' -O peercast-qt0014.tar.gz
$ tar xzf peercast-qt0014.tar.gz
$ cd peercast/ui/linux
$ make
ファイルを所定の場所にコピー
$ cp peercast /usr/local/bin/peercast
$ cp -a html/ /etc/peercast/htm
起動スクリプトを作成
/etc/init.d/peercast
#!/bin/sh
#
# peercast - this script starts and stops the peercast-server daemon
#
# chkconfig: - 85 15
# description: peercast is a persistent key-value database
# processname: peercast-server
# config: /etc/peercast.conf
# pidfile: /var/run/peercast.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
peercast="/usr/local/bin/peercast"
prog=$(basename $peercast)
PEERCAST_CONF_FILE="/etc/peercast/peercast.conf"
PEERCAST_HTML_DIR="/etc/peercast/html"
[ -f /etc/sysconfig/peercast ] && . /etc/sysconfig/peercast
lockfile=/var/lock/subsys/peercast
start() {
[ -x $peercast ] || exit 5
echo -n $"Starting $prog: "
daemon $peercast -d -i $PEERCAST_CONF_FILE -P $PEERCAST_HTML_DIR
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $peercast -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
起動
sudo /etc/init.d/peercast start
iPhoneからPeerCastの動画配信をリアルタイムに視聴する(使ってみようlive segmenter編)
概要
今回はlive segmenterの使い方の説明です。 live segmenterを使ってPeerCastの配信動画をiPhoneでストリーミング再生できるところまでやりましょう。
事前準備
ffmpeg をパスの通ったディレクトリに配置する。
下記ファイルを同一ディレクトリに配置する。 live_segmenter http_streamer.rb hs_config.rb hs_encoder.rb hs_transfer.rb config_stream.yaml
Apacheの起動
動画を配信するためにHTTPサーバが必要です。今回はOSX付属のApacheを使います。 システム設定のSharingからWeb Sharingを有効にします。
配信プロファイルの設定
配信プロファイルを設定します。下記項目は適宜書き換えてください。 input_location → PeerCastストリーミング動画のURL copy_dev: directory → ユーザのホームディレクトリ/Sitesを設定
config_stream.yaml
temp_dir: '/tmp'
segment_prefix: 'peca_stream'
index_prefix: 'peca_stream'
log_type: 'STDOUT'
log_level: 'DEBUG'
input_location: 'mmsh://127.0.0.1:7144/stream/__CHANGEME__.wmv'
segment_length: 10
url_prefix:
index_segment_count: 15
source_command: 'ffmpeg -i %s -f mpegts -'
segmenter_binary: './live_segmenter'
encoding_profile: [ 'cell_150k' ]
transfer_profile: 'copy_dev'
cell_150k:
ffmpeg_command: "ffmpeg -er 4 -i %s -f mpegts -acodec libmp3lame -ar 32000 -ab 48k -s 400x224 -vcodec libx264 -b 110k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 1 -refs 5 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 110k -maxrate 110k -bufsize 110k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 16:9 -r 10 -g 30 -async 2 - | %s %s %s %s %s"
bandwidth: 158000
copy_dev:
transfer_type: 'copy'
directory: '/Users/__CHANGEME__/Sites'
ソースコードの修正
input_location の設定をうまく解釈してくれないようなのでソースコードを修正します。 hs_config.rb の下記行をコメントアウトします。
hs_config.rb
# if !File.readable? config['input_location']
# log.error("The input file can not be read: #{config['input_location']}")
# raise
# end
ストリーミングの開始
ruby http_streamer.rb config_stream.yml
~/Sites 以下にファイルが作成されたら成功です。
動画の再生
iPhoneからSafariでMacにアクセスし、プレイリストファイル(拡張子がm3u8)を読み込みます。
http://11x.15x.6x.25x/~cohakim/peca_stream_multi.m3u8
動画が再生されれば成功です!
関連リンク
iPhoneからPeerCastの動画配信をリアルタイムに視聴する
iPhoneからPeerCastの動画配信をリアルタイムに視聴する(使ってみようFFmpeg編)
概要
今回はFFmpegの使い方の説明です。FFmpegを使ってPeerCastで配信されている動画のストリーミングデータを受信し、適当なフォーマットにエンコードして保存するところまでやりましょう。
チャンネル情報からストリーミング動画のURLを取得する
まずはストリーミング動画のURLを取得しましょう。 PeerCast Qtを立ち上げ、適当なYPを開きます。チャンネル数の多いCPがおすすめです。
適当なチャンネルを選んでチャンネルの配信URLを確認します。(しばらくテストに使うので長時間配信しそうなチャンネルを選びましょう)
http://localhost:7144/pls/8047B735E1533111FF16998637DXXXX?tip=6x.3x.3x.5x
この配信URLにアクセスすると次のようなURLが取得でき、これがストリーミング動画のURLとなります。
mmsh://127.0.0.1:7144/stream/8047B735E1533111FF16998637DXXXX.wmv
FFmpegで受信する
まずは下記コマンドを実行してみましょう。動画のURLは書き換えてください。
ffmpeg -i mmsh://127.0.0.1:7144/stream/8047B735E1533111FF16998637DXXXX.wmv -f mpegts -
動画のメタデータが表示されたあと、ストリームデータがつらつらと表示されれば成功です。 何も表示されずに画面がとまったまま動かない場合は配信が終了している可能性があるのでチャンネルを変えてみてください。
コマンドの意味は次の通り。 -i 動画ファイル/URL -f フォーマットの指定 mpegts形式 最後の「-」は出力先の指定で標準出力を指定しています
FFmpegでエンコードする
受信ができたので次はエンコードして保存してみましょう。
まずは下記コマンドを実行してみましょう。動画のURLは書き換えてください。
ffmpeg -i mmsh://127.0.0.1:7144/stream/8047B735E1533111FF16998637DXXXX.wmv -vcodec libx264 -b 320k -fpre "/opt/local/share/ffmpeg/libx264-default.ffpreset" -acodec aac -strict experimental -f mpegts ~/Desktop/test.mpeg
デスクトップに動画が保存されていたら成功です。
コマンドの意味は次の通り。 -vcodec ビデオコーデックを指定 -b ビットレートを指定 -fpre エンコードのプリセットファイル指定 -acodec オーディオコーデックを指定 -strict experimental 標準準拠度を指定
まとめ
FFmpegを使ってPeerCastで配信されている動画のストリーミングデータを受信し、適当なフォーマットにエンコードして保存するところまでできました。 実際に運用するには、iPhoneに適したフォーマットや、モバイル通信でも使えるビットレートなどを考慮してエンコード形式を設定しなければいけませんが、 次回説明するlive_segmenterは、それらをテンプレートとしてもっていて複数のテンプレートを簡単に切り替えられるようになっています。
参考リンク
ffmpeg – Wikipedia FFmpeg Documentation
関連リンク
iPhoneからPeerCastの動画配信をリアルタイムに視聴する
iPhoneからPeerCastの動画配信をリアルタイムに視聴する(環境構築編)
概要
iPhoneからPeerCastの動画配信をリアルタイムに視聴する。 環境構築編です!今回の記事はMac OS X が対象です。
中継サーバの環境について
中継サーバにはWindows機もしくは(Mac OS Xをのせてた)Macを使います。Linuxマシンは中継機には適しません。 日本のメジャーな配信にはPeerCast-VPという改造版のPeerCastクライアントが使用されているようです。ポート0の排除機能など有用な機能が追加されているバージョンですが、PeerCast-VP版以外のクライアントも排除してしまうようです。 WindowsおよびMacには対応クライアントが存在していますが、Linuxにはノーマルのクライアントしか存在しておらず、視聴できるチャンネルが限られてしまいます。
インストールするソフトウェア
FFmpeg HTTP-Live-Video-Stream-Segmenter-and-Distributor PeerCast Qt
インストール
FFmpegのインストール
MacPortsを使ってインストールします。MacPortsにはFFmpegのパッケージが2種類存在しています。
- ffmpeg
- ffmpeg-devel
ffmpegの方はPeerCastで使われている配信プロトコルmmshに非対応なので、 ffmpeg-develの方をインストールしましょう。
$ sudo port install ffmpeg-devel
なおffmpeg-develインストール時に既にffmpegをインストールしていた場合、ffmpegをdeactivateする必要があります。
念のため対応フォーマットとプロトコルを確認しておきましょう。
$ ffmpeg -formats
$ ffmpeg -protocols
HTTP-Live-Video-Stream-Segmenter-and-Distributor
本家のコードがRuby1.9系に非対応だったため、下記リポジトリからコードを取得します。こちらはRuby1.9系対応済みです。 gr4y / HTTP-Live-Video-Stream-Segmenter-and-Distributor
git clone https://github.com/gr4y/HTTP-Live-Video-Stream-Segmenter-and-Distributor.git
Makefileを修正します。ビルドに必要なヘッダとライブラリのパスを指定します。 HTTP-Live-Video-Stream-Segmenter-and-Distributor/Makefile
all:
gcc -Wall -g live_segmenter.c -o live_segmenter -lavformat -lavcodec -lavutil -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread -I/opt/local/include -L/opt/local/lib
clean:
rm -f live_segmenter
makeします。
$ make
できたファイルを適当なディレクトリにコピーします。パスが通ったディレクトリに配置すればいいと思いますが、今回はアプリの配布パッケージに含めてしまいます。
$ cp live_segmenter ~/PecaStream/Resources
$ cp http_streamer.rb ~/PecaStream/Resources
$ cp hs_config.rb ~/PecaStream/Resources
$ cp hs_encoder.rb ~/PecaStream/Resources
$ cp hs_transfer.rb ~/PecaStream/Resources
PeerCast Qt
下記サイトからバイナリをダウンロード PeerCast Qt
以上で環境構築は終了です。 次回は使い方を見ていきたいと思います。
参考リンク
Free Live Video Streaming with HTTP Live Streaming, uStream and justin.tv in a GNU Linux Environment
関連リンク
iPhoneからPeerCastの動画配信をリアルタイムに視聴する
MacでFFmpegをあんじょうビルドする(解決編)
概要
MacでFFmpegをmmshに対応させてビルドする方法が分かったのでメモ。
MacPortsでffmpeg-develをインストールして、オフィシャルから落とした最新パッケージをビルドすればいいだけでした。
間違い。 ffmpeg-develがmmshに対応していました。 ffmpegをインストールしている場合、deactivateしてからffmpeg-develをインストールします。
sudo port deactivate ffmpeg
sudo port install ffmpeg-devel
どうもお騒がせしました
iPhoneからPeerCastの動画配信をリアルタイムに視聴する
概要
iPhoneからPeerCastの動画配信をリアルタイムに視聴する方法を調べたのでメモしておきます。 現時点ではまだ検証段階です。
技術要素
HTTP Live Streaming
HTTP Live Streaming はiPhoneで採用されている次世代のストリーミング技術です。動画や音声をHTTPでダウンロードしつつ同時に再生するというすご技で、ストリーミング用のプロトコルを使わずともHTTPだけで動画をストリーミング配信できます。 仕組みはとても単純です。まず、サーバに動画のプレイリストと細切れに分割された動画を用意します。 クライアントはプレイリストを読み込んでプレイリストの動画を数珠つなぎに再生していきます。 プレイリストは動画の追加が随時可能なのでリアルタイムの配信などにも対応できます。
18年越しの大改修! Snow LeopardのQuickTime X HTTP Live Streaming
FFmpeg
いわずと知れた最強の動画ソリューションです。 PeerCastのストリーミングを受信するのに使います。
HTTP-Live-Video-Stream-Segmenter
HTTP Live Streaming に対応したHTTPサーバとして動作します。 ffmpeg の受信データをパイプするだけでHTTP Live Streamingが可能です。
処理の流れ
・FFmpegでPeerCastの動画ストリームを受信 ・ストリームをiPhoneで見られる形式にエンコードしてSegmenterにパイプ ・SegmenterがHTTP Live Streamingに対応した形で動画とプレイリストを生成 ・iPhoneクライアントがプレイリストを読み込んで配信をリアルタイムに視聴
参考リンク
同様の構成でニコニコ動画非公式ビュアが実現されている。 NeetAndCat
関連リンク
iPhoneからPeerCastの動画配信をリアルタイムに視聴する(環境構築編) iPhoneからPeerCastの動画配信をリアルタイムに視聴する(使ってみようFFmpeg編) iPhoneからPeerCastの動画配信をリアルタイムに視聴する(使ってみようlive segmenter編)





