Skip to main content
Known Participant
April 28, 2010
Answered

Server side Stream.play() and origin edge set up

  • April 28, 2010
  • 1 reply
  • 1210 views

I'm stuck trying to get a Stream.play() call on a recorded video file (.flv) to translate from origin to edge servers.  Don't even know if it's possible.

If I call Stream.play() on a server, and connect a viewer directly to  that server, the viewer sees the stream play.  If I call Stream.play()  on an origin server and connect a viewer to edge servers the stream does not play.

Is it possible to configure in any way that the play() call would propagate to edge servers?

According to FMS 3.5 docs on the Stream class, the following is the case:

"When you call Stream.play()on the server, the server becomes the publisher."

See http://help.adobe.com/en_US/FlashMediaServer/3.5_SS_ASD/WS5b3ccc516d4fbf351e63e3d11a11afc95e-7e42.html#WSF74EED77-5C4C-423d-B879-7C02DF8FEC5F

If that server becomes a publisher and lets say it was an origin server on a CDN, shouldn't the other machines in the configuration receive the published stream?

Somehow when you publish a live stream to an origin server it makes its way to edge servers.  Is this analogy not relevant to the scenario wherein you call Stream.play() on a recorded file?

Thanks

    This topic has been closed for replies.
    Correct answer

    If your edge and origin setups are working fine in the way they have been configured by CDN then all you have to do is to make sure Stream.play( ) is happening on all the Origin Servers you would use. There is nothing else to be done on the edge servers.

    When a viewer connects to the edge server, he is routed to one of the origin servers and would be able to subscribe to the livestream being served by the FMS app(through Stream.play( )).

    Thanks

    Mamata

    1 reply

    April 28, 2010

    Hi,

    While making a viewer connect to an edge - origin setup to view a recorded video through streaming,

    you should use the URI rtmp://<edge server IP>?/rtmp://<Origin server IP>/<FMS app name>/<instance name where stream is present>

    Were you connecting in the same manner?

    Thanks

    Mamata

    Known Participant
    April 28, 2010

    Thanks for your response.

    It does appear to be a  supported FMS behavior out of the box.  My CDN discussed with Adobe and  the Adobe response was that no special configuration changes were  necessary server side.

    My CDN gave me instructions to  connect as follows:

    Upstream (client pushing  call to server side play()):


    rtmp://<origin server  IP>/<FMS app name>/<instance name where stream is  present>

    Downstream (player):

    rtmp://<edge  server  for LIVE STREAMS (not on demand even though it's a recorded  file) IP>/<FMS app name>/<instance name  where stream is present>

    This  is working.

    They did caution though that the  Steam.play() call would have to be made on ALL of their origin servers  to insure full edge server coverage.  I guess this means I'd need a list  of all origin server connection url's from them.  I'd make  NetConnections to all of them with my app that makes the play() calls  (not the viewers) and push my Stream.play() calls through all of the  NetConnections?  Trying to confirm this with them now.

    Correct answer
    April 29, 2010

    If your edge and origin setups are working fine in the way they have been configured by CDN then all you have to do is to make sure Stream.play( ) is happening on all the Origin Servers you would use. There is nothing else to be done on the edge servers.

    When a viewer connects to the edge server, he is routed to one of the origin servers and would be able to subscribe to the livestream being served by the FMS app(through Stream.play( )).

    Thanks

    Mamata