Perl RTMP implementation

Yokohama.pm Tech Talk #2

August 22nd, 2008

RTMP

Real Time Message Protocol

AMF

Action Message Format

AMF

...

AMF

...

AMF

...

AMF

Data::AMF

RTMP

...

RTMP

...

RTMP

...

RTMP

RTMPで何ができるのか

...

RTMPで何ができるのか

...

RTMPで何ができるのか

...

RTMPで何ができるのか

...

RTMPで何ができるのか

RTMP実装の数々

perl版つくってます!

Kamaitachi (開発名)

モチベーション

...

モチベーション

...

モチベーション

...

モチベーション

...

モチベーション

開発現状

...

開発現状

...

開発現状

...

開発現状

...

開発現状

...

開発現状

...

開発現状

Remoting

DEMO

Media Streaming

...

Media Streaming

大きく分けて二種類の配信方法がある

...

Media Streaming

大きく分けて二種類の配信方法がある

  1. Flash PlayerからWebカムなどをつかって動画を配信する方法
...

Media Streaming

大きく分けて二種類の配信方法がある

  1. Flash PlayerからWebカムなどをつかって動画を配信する方法
  2. FMS側のみで動画などを配信する方法
...

Media Streaming

大きく分けて二種類の配信方法がある

  1. Flash PlayerからWebカムなどをつかって動画を配信する方法
  2. FMS側のみで動画などを配信する方法

1はPlayerから受信したデータをそのまま配信するだけでいいので簡単。2は動画などをフレームに分割してその単位で送る必要がある。

Media Streaming

...

Media Streaming

mp3ストリーミングの例

$stream = sub {
    my ($seconds, $bytes) = (0, 0);

    while (my $frame = MPEG::Audio::Frame->read($fh)) {
        my $audio = Kamaitachi::Packet->new(
            number => 4,
            type   => 0x08,
            obj    => $packet->obj,
            data   => pack('C', 0x2f) . $frame->asbin,
        );
        $seconds += $frame->seconds;
        $bytes   += $frame->length;

        $self->write($socket, $audio);

        last if 0.1 <= $seconds;
    }
    Danga::Socket->AddTimer($seconds, $stream);
};
$stream->();

DEMO

TODO

...

TODO

...

TODO

...

TODO

That's All