Skip to main content
March 27, 2009
Question

Live streaming

  • March 27, 2009
  • 5 replies
  • 2199 views
Hey folks,

Here's my situation. We purchased the Flash Media Interactive Server 3.5 a few days ago and everything is running smoothly.

We have a website where users can stream live and other users can see the live stream can sign in and broadcast in live. Other users can see the live stream. This is already working. However we would like to use the Dynamic Streaming's capability. We have users who have low-band and have other ones who have broadband Internet connection. We already know how to determine the users' speed and offer them the best suitable stream.

But! The problem is that how we are supposed to make 3 different versions from one live stream? Yes, I know that we can use the Live Encoder to do the job but the thing is that we don't want our users to install anything on their computer.

Is there a way to do some server-side AS to produce three different quality version from one live stream? Or is it possible to integrate the Live Encoder in the background to do this?

If not, then I suppose the only way we can solve this problem if our users stream 2 different versions at the same time, a low-band and a broadband. However I'm not sure that this would work and also it would require some amount of bandwidth from the streaming users' side. So I would like to avoid this solution.

Is there a way to do this encoding procedure in the background? With recorded videos it's not a big deal, we can use ffmpeg but we are just stuck with this live stream encoding.

Any suggestion is welcome. Thanks!

Cheers,

James
    This topic has been closed for replies.

    5 replies

    March 30, 2009
    Hi there,

    Anyone who could help me with stuff? Once again, I need two quality from one live stream without install the Live Encoder on the user's computer.


    Cheers,

    James
    August 11, 2010

    Hi James

    How's the status, have you figured a way to do the job now?

    Regards

    Known Participant
    March 6, 2013

    Hi James,

                If you have found any work around could you please share with us?

    Regards,

    Thirumalai murugan.G

    March 28, 2009
    The problem is that if I stream two instances from a webcam with different quality settings, both will have the latter quality.

    Example:

    // Broadband quality
    var ncB:NetConnection = new NetConnection();
    ncB.connect("rtmp://"+myserver+"/live");
    var nsB:NetStream = new NetStream(ncB);
    var camB:Camera = Camera.get();
    var micB:Microphone = Microphone.get();
    camB = Camera.get();
    camB.setMode(320, 240, 24);
    camB.setQuality(0,100);
    micB = Microphone.get();
    micB.setRate(44);
    nsB.attachVideo(camB);
    nsB.attachAudio(micB);
    nsB.publish(mystreamnamebroadcast, "record");

    // Low-band quality
    var ncB2:NetConnection = new NetConnection();
    ncB2.connect("rtmp://"+myserver+"/live");
    var nsB2:NetStream = new NetStream(ncB2);
    var camB2:Camera = Camera.get();
    var micB2:Microphone = Microphone.get();
    camB2 = Camera.get();
    camB2.setMode(320, 240, 15);
    camB2.setQuality(0,80);
    micB2 = Microphone.get();
    micB2.setRate(22);
    nsB2.attachVideo(camB2);
    nsB2.attachAudio(micB2);
    nsB2.publish(mystreamnamebroadcast+'2', "record");

    So in that case both stream will have the low-band quality because this will override the former settings.

    How can I do the magic on the client side? Is it possible for AS to make a low quality from a high one on the fly (e.g. turn it to 15 fps from 25)?
    March 27, 2009
    I don't think a server side re-encode would be a workable solution for this... if you have any real number of publishing users, you'd burn up processor cycles on the machine doing the re-encoding really fast, and your deployment costs would grow exponentially.

    If it's a must have feature, I'd go the route of having the client publish multiple streams. As you mentioned, client side upload bandwidth will become a concern... perhaps you can give the end user a bit of control if it fits your business model (maybe client side options to control bitrate, or turn off the feature altogether)
    March 27, 2009
    Hi James,
    FMLE takes input only from capture cards & camera. If you really-really want to do it, then one of the option could be to:

    --> Play the stream on a flashPlayer --> capture it data using UScreen capture which comes with FME ---> encode & publish t back to FMS using FMLE.


    March 27, 2009
    Thanks for sharing, fmslove.

    Is it possible that the FMS would arrange these things in the background together with FMLE? Is there anything that can be done via server-side AS (to configure this)?

    James
    March 27, 2009
    One of my thought was:

    A) User broadcasts live -> B) Broadcast is sent to Media Encoder -> C) Media Encoder produces a low and a broadband version -> D) Media Encoder passes the stream to Media Server -> E) User gets the right stream (either low or broadband)

    Is it possible to do this? If Media Encoder is not supposed to do this is there any other software on the market which could do this?