差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
web:flash:rtmp:example-1 [2011/08/25 19:26] yuki |
— (現在) | ||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== RTMPストリーミング実装例1 ====== | ||
- | |||
- | * 動作確認環境 | ||
- | * Ubuntu 10.04 server | ||
- | * apache2:2.2.14-5ubuntu8.4 | ||
- | |||
- | * 採用ソフトウェア(インストール方法は省略) | ||
- | * crtmpserver | ||
- | * ffmpeg | ||
- | * "-metadata" の設定が出来ないと、ストリーミング対象になる名前がわからないから自前コンパイル推奨。 | ||
- | * flowplayer | ||
- | |||
- | * 実践 | ||
- | * crtmpserverの起動 | ||
- | * <code>cd ~/crtmpserver/builders/cmake && ./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua</code> | ||
- | * 動作が安定し始めたら、"--daemon"オプションをつけてバックグラウンド動作にする。 | ||
- | * 割とこうなる。 | ||
- | * <code>+-----------------------------------------------------------------------------+ | ||
- | | Services| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | | c | ip | port| protocol stack name | application name | | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 1935| inboundRtmp| appselector| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 8081| inboundRtmps| appselector| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 8080| inboundRtmpt| appselector| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |udp| 0.0.0.0| 1935| inboundRtmfp| flvplayback| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 6666| inboundLiveFlv| flvplayback| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 9999| inboundTcpTs| flvplayback| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 8989| inboundHTTPDBAccess| samplefactory| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 1111| inboundHttpXmlVariant| vptests| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 1112| inboundJsonCli| admin| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 6665| inboundLiveFlv| proxypublish| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |tcp| 0.0.0.0| 6544| inboundTcpTs| vmapp| | ||
- | +---+---------------+-----+-------------------------+-------------------------+ | ||
- | |||
- | /home/flv/crtmpserver/sources/crtmpserver/src/crtmpserver.cpp:231 GO! GO! GO! (27274)</code> | ||
- | |||
- | * ffmpegから、crtmpserverに向けてTCPで動画ストリームを出力 | ||
- | * <code>/usr/local/bin/ffmpeg -i mov000448.mp4 -re -r 15 -acodec copy -g 10 -vcodec libx264 -s 854x480 -metadata duration=24.00 -metadata streamName=mov000448 -f flv tcp://127.0.0.1:6666?pkt_size=1400</code> | ||
- | * crtmpserverの出力例 | ||
- | * <code>/root/crtmpserver/sources/thelib/src/netio/epoll/tcpacceptor.cpp:133 Client connected: 127.0.0.1:47993 -> 0.0.0.0:6666 | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:46 parameters: | ||
- | <MAP name="" isArray="false"> | ||
- | <STR name="ip">0.0.0.0</STR> | ||
- | <INT16 name="port">6666</INT16> | ||
- | <STR name="protocol">inboundLiveFlv</STR> | ||
- | <NULL name="sslCert"></NULL> | ||
- | <NULL name="sslKey"></NULL> | ||
- | <BOOL name="waitForMetadata">true</BOOL> | ||
- | </MAP> | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:51 _waitForMetadata: 1 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:98 Handlers count changed: 11->12 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/baseliveflvappprotocolhandler.cpp:45 protocol CTCP(16) <-> TCP(3) <-> [ILFL(4)] registered to app flvplayback | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:230 Stream name: mov000448 | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:156 Stream 1 of type INLFLV with name `mov000448` registered to application `flvplayback` | ||
- | /root/crtmpserver/sources/thelib/src/streaming/streamsmanager.cpp:91 short name: mov000448; long name: mov000448 | ||
- | /root/crtmpserver/sources/thelib/src/streaming/streamsmanager.cpp:100 short count: 0; long count: 0 | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:239 subscribedOutStreams count: 0 | ||
- | /root/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:184 Stream metadata: | ||
- | <MAP name="" isArray="true"> | ||
- | <MAP name="__index__value__0" isArray="true"> | ||
- | <DOUBLE name="audiocodecid">10.000</DOUBLE> | ||
- | <DOUBLE name="audiodatarate">149.771</DOUBLE> | ||
- | <DOUBLE name="audiosamplerate">48000.000</DOUBLE> | ||
- | <DOUBLE name="audiosamplesize">16.000</DOUBLE> | ||
- | <STR name="compatible_brands">isommp423gp5</STR> | ||
- | <STR name="creation_time">2011-07-05 06:49:44</STR> | ||
- | <STR name="duration">24.00</STR> | ||
- | <STR name="encoder">Lavf53.0.3</STR> | ||
- | <DOUBLE name="filesize">0.000</DOUBLE> | ||
- | <DOUBLE name="framerate">15.000</DOUBLE> | ||
- | <DOUBLE name="height">480.000</DOUBLE> | ||
- | <STR name="major_brand">mp42</STR> | ||
- | <STR name="minor_version">1</STR> | ||
- | <BOOL name="stereo">true</BOOL> | ||
- | <STR name="streamName">mov000448</STR> | ||
- | <DOUBLE name="videocodecid">7.000</DOUBLE> | ||
- | <DOUBLE name="videodatarate">195.312</DOUBLE> | ||
- | <DOUBLE name="width">854.000</DOUBLE> | ||
- | </MAP> | ||
- | </MAP></code> | ||
- | |||
- | * 最後に、RTMPを見るように設定したHTMLファイルを作ってアクセスする。 | ||
- | * HTMLコード | ||
- | * <code><html><head></head> | ||
- | <div style="width:854px;height:480px;" id="fms" class="player"> | ||
- | <a class="player" id="fms"> </a> | ||
- | </div> | ||
- | <script type="text/javascript" src="plugins/Movie/flowplayer-3.2.6.min.js"> </script> | ||
- | <script> | ||
- | $f("fms","plugins/Movie/flowplayer-3.2.7.swf", { | ||
- | |||
- | clip: { | ||
- | url: 'mov000448', | ||
- | live: true, | ||
- | provider: 'rtmp' | ||
- | }, | ||
- | |||
- | plugins: { | ||
- | rtmp: { | ||
- | url: 'plugins/Movie/flowplayer.rtmp-3.2.3.swf', | ||
- | durationFunc: 'getStreamLength', | ||
- | netConnectionUrl: 'rtmp://www.ainoniwa.net:1935/flvplayback' | ||
- | } | ||
- | } | ||
- | }); | ||
- | </script> | ||
- | </html></code> | ||
- | |||
- | * 上手く繋がればOK | ||
- | * <code>/root/crtmpserver/sources/thelib/src/netio/epoll/tcpacceptor.cpp:133 Client connected: 10.0.0.1:58663 -> 0.0.0.0:1935 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:98 Handlers count changed: 12->13 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:100 Register protocol CTCP(17) <-> TCP(35) <-> [IR(36)] to application appselector | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/tcpacceptor.cpp:133 Client connected: 10.0.0.1:57698 -> 0.0.0.0:1935 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:98 Handlers count changed: 13->14 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:100 Register protocol CTCP(18) <-> TCP(37) <-> [IR(38)] to application appselector | ||
- | /root/crtmpserver/sources/applications/appselector/src/rtmpappprotocolhandler.cpp:81 Selected application: flvplayback | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:148 Protocol CTCP(18) <-> TCP(37) <-> [IR(38)] unregistered from application: appselector | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:100 Register protocol CTCP(18) <-> TCP(37) <-> [IR(38)] to application flvplayback | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:257 ***Event handler HUP: 0x9953c0 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/tcpcarrier.cpp:78 Unable to read data. 10.0.0.1:58663 -> 192.168.1.80:1935 | ||
- | /root/crtmpserver/sources/thelib/src/protocols/protocolmanager.cpp:43 Enqueue for delete for protool [TCP(35)] <-> IR(36) | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:107 Handlers count changed: 14->13 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/protocolmanager.cpp:43 Enqueue for delete for protool [IR(36)] | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:148 Protocol [IR(36)] unregistered from application: appselector | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:156 Stream 8 of type NR with name `` registered to application `flvplayback` | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:414 User control message type: RM_USRCTRL_TYPE_STREAM_SET_BUFFER_LENGTH | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/tcpacceptor.cpp:133 Client connected: 10.0.0.1:51971 -> 0.0.0.0:1935 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:98 Handlers count changed: 13->14 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:100 Register protocol CTCP(17) <-> TCP(39) <-> [IR(40)] to application appselector | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:775 Play request for stream name `mov000448`. Start: -2; length: -1 | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:164 Stream 8 of type NR with name `` unregistered from application `flvplayback` | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:156 Stream 9 of type ONR4R with name `mov000448` registered to application `flvplayback` | ||
- | /root/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:414 User control message type: RM_USRCTRL_TYPE_STREAM_SET_BUFFER_LENGTH | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:257 ***Event handler HUP: 0xa15e20 | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/tcpcarrier.cpp:78 Unable to read data. 10.0.0.1:51971 -> 192.168.1.80:1935 | ||
- | /root/crtmpserver/sources/thelib/src/protocols/protocolmanager.cpp:43 Enqueue for delete for protool [TCP(39)] <-> IR(40) | ||
- | /root/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:107 Handlers count changed: 14->13 IOHT_TCP_CARRIER | ||
- | /root/crtmpserver/sources/thelib/src/protocols/protocolmanager.cpp:43 Enqueue for delete for protool [IR(40)] | ||
- | /root/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:148 Protocol [IR(40)] unregistered from application: appselector</code> | ||