Cheers,
Andrei
> You received this message because you are subscribed to "C++ RTMP Server" mailing list.
> To post to this group, send email to c-rtmp...@googlegroups.com
> To unsubscribe from this group, send email to
> c-rtmp-serve...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/c-rtmp-server?hl=en
Please post the entire crtmpserver log output, not only the part where client wants to connect. I'm particularly interested in the part containing the logs with the publish attempt.
Best thing to do, just copy everything
Here is the problem:
"Play request for stream name `testnow1`. Start: 0; length: -1"
The player **specifically** requested the VOD stream, not the live stream. crtmpserver just tries to comply with the request which, obviously, fails
More details here:
http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/help.html?content=00000185.html
Pay very close attention to NetStream.Play function especially to start and len parameters
Cheers,
Andrei
Here is the problem:
"Play request for stream name `testnow1`. Start: 0; length: -1"The player **specifically** requested the VOD stream, not the live stream. crtmpserver just tries to comply with the request which, obviously, fails
More details here:
http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/help.html?content=00000185.htmlPay very close attention to NetStream.Play function especially to start and len parameters
1318977128:3:/dev/crtmpserver/sources/thelib/src/netio/epoll/tcpacceptor.cpp:154:Accept:Client connected: 192.168.253.32:33368 -> 0.0.0.0:1935
1318977128:2:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/inboundrtmpprotocol.cpp:123:ValidateClient:This version of player doesn't support validation
1318977128:2:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:506:ProcessUsrCtrl:User control message type: RM_USRCTRL_TYPE_STREAM_SET_BUFFER_LENGTH
1318977128:3:/dev/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:227:SignalStreamRegistered:Stream NR(55) with name `` registered to application `flvplayback` from protocol IR(44)
1318977128:2:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:1239:ProcessInvokeGeneric:Default implementation of ProcessInvokeGeneric: Request: FCSubscribe
1318977128:2:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:1239:ProcessInvokeGeneric:Default implementation of ProcessInvokeGeneric: Request: _checkbw
1318977128:3:/dev/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:238:SignalStreamUnRegistered:Stream NR(55) with name `` unregistered from application `flvplayback` from protocol IR(44)
1318977128:3:/dev/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:227:SignalStreamRegistered:Stream NR(56) with name `` registered to application `flvplayback` from protocol IR(44)
1318977128:3:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:900:ProcessInvokePlay:Play request for stream name `testbox`. Start: -2; length: -1
1318977128:3:/dev/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:238:SignalStreamUnRegistered:Stream NR(56) with name `` unregistered from application `flvplayback` from protocol IR(44)
1318977128:3:/dev/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:227:SignalStreamRegistered:Stream ONR4R(57) with name `testbox` registered to application `flvplayback` from protocol IR(44)
1318977128:2:/dev/crtmpserver/sources/thelib/src/protocols/rtmp/basertmpappprotocolhandler.cpp:506:ProcessUsrCtrl:User control message type: RM_USRCTRL_TYPE_STREAM_SET_BUFFER_LENGTH
/* hack for Wowza Media Server, it does not send result for
* releaseStream and FCPublish calls */
crtmpserver now sends responses to all of them, including releaseStream. Before, it wasn't sending response releaseStream because the stream was not there. But, obviously, ffmpeg crashes because it is not expecting _error message. On the other hand, why are they NOT expecting _error message?
They send releaseStream before doing publish. So the stream may not be there.
Finally, here is the error message spit out by ffmpeg:
[rtmp @ 0x7fc191c19620] Server error: Specified stream not found in call to releaseStream
You guessed, crtmpserver is sending that message and it makes perfect sense.
Bottom line, ffmpeg should fix rtmp module *properly* and not with hacks for "some" servers
Cheers,
Andrei
https://gist.github.com/1297236
Josh
Everybody thinks it has something to do with the server.
The server does what it is supposed to do: takes bytes from the "inbound pipe" and shoves them on the "outbound pipe". It does NOT caches/buffers them in any way. The faulty piece is the flash player itself. Modify your flash application and setup the buffer time to be 0 (not 0.1, not 1, not anything else). This basically disables any buffering made on the flash side. The overall latency will drop below 100 ms basically becoming the TCP latency
Here is a patch that I wrote last week to fix ffmpeg's rtmp for rtmpd.
It's been tested with rtmpd rev 671; not sure about current trunk.
It's a fix for ffmpeg's native rtmp, not librtmp. It does 2 things:
-Disables the releaseStream and FCPublish calls for outbound streams
-Fixes invokes to use a counter instead of hardcoded values
The patch might not be needed after Andrei's latest commits (r686 and
r687). I just posted it for the benefit of those who might be trying
to get ffmpeg publishing to work with a slightly older rtmpd.
Josh