Latencies / delay in live streams

I'm doing some tests with FMS and live streaming, but I observe quite long delays.
When the stream is first accessed, the latency is around 3-5 seconds, which is acceptable.
But as we watch the stream for about 30 minutes or more, the latency grows to around 20 seconds, which is just too much.
What settings should I look at to keep the latency / delay minimal?

You're going to want to look at the bandwidth that you're pushing into your FMS system and the bandwidth you're getting out.  Usually when you see evolving live latency it's because there's a bandwidth bottleneck somewhere and you're dropping frames and falling behind as FMS attempts to deliver a stream that's too big for the destination.  If not then perhaps it's something else, but you'll want to eliminate that possibility first as it's the most common.
Asa

Similar Messages

  • Realtime delay of 'live' stream

    Hello,
    I'm speccing a job for a client who wants to use live streams
    and have cutomers phoning in to direct the show as it happens in
    the studio. One consideration is how 'live' is live streaming in
    flash. Does anyone know roughly what the delay from studio camera
    to end users machine is? I intend using a high-spec machine with
    good video card, flash media encoder, and Limelight Networks as the
    server provider.
    Thanks in advance
    Mike

    yes, we too have a very small delay in distributing the
    signal.
    But remember the buffer settings in the client. Typically
    that would be 3 seconds and anything smaller than that may result
    in a jiggly video stream.
    The internet itself was not meant as areal-time delivery
    medium, so delays may vary, opposite to classic media like tv or
    radio, where there were no varying delays (until dvb-t came up (=
    jan

  • How to minimize video / audio delay in live meeting?

    I am developing a virtual classroom application. In two way
    live communication the delay with video/audio between participants
    is about 5 seconds, which is totally unaccaptable.
    Can it be improved with the client / server side coding or
    with improving / fine tuning the FMS or Windows server?
    Server specs are:
    FMS 2.04
    Windows 2003 SP2
    2.0 GHZ AMD Athlon 64 Processor 3200+
    1Gig RAM
    Plenty of disc space
    It's a dedicated server located in Germany. The users who
    tested were based in the UK.
    This problem could be a project killer if now solved
    :(

    turbostas - What a coincidence.
    I just hit the forums for the same issue. I currently use a
    Helix server and I want to convert to FMS 2 for on line speech
    communication classes.
    However when I use the Flash media encoder I get the same 5
    second delay in Live streaming.
    I have 8 Megs of available bandwidth and I am testing
    locally. There should be little or no lag. I opened a port and
    tested from home with the same scenario.
    I have a camera setup on a laptop using Flash media encoder -
    creating a live stream. Then I am simply using a swf to connect to
    it. The only thing I noticed is that the swf takes about 5-8 second
    to buffer before playing and I am unsure if it is the cause or not.
    Anyone come across this?
    I have tried every known setting and I get the same delay
    with these settings:
    12 FPS, 320X240, Bitrate 100
    25 fps, 320X240, bitrate 200
    60 fps, 320X240, bitrate 650
    I am open for suggestions?

  • Trying to find lowest latency setting for FMS 3.0 live streaming app

    Hi,
    I work for a technology company in the agricultural industry,
    and we recently bought Adobe FMS 3.0 for live streaming of an
    online auction application. Initially the tests were ok, but the
    stream latency is becoming a real issue. It starts at around 1s
    delay, which is barely acceptable, but an hour into the sale it
    stretches to 2-3s, and more. This is becoming a real deal breaker
    for the Flash solution that looked very promising at the beginning.
    We need to find the absolute lowest latency setting for the
    live streaming application supplied with FMS3.0.
    Low latency (1s max) and stable latency has highest priority,
    more important than picture quality or uninterrupted streaming.
    How can we achieve this? Are there any settings where I can
    tweak the stream latency?
    I am not a Flash expert, but I can find and modify the
    configuration files on the FMS Windows 2003 server.
    Any help would be immensely appreciated.

    On server side:
    FMS installs itself with default configurations optimized for
    Max CPU efficiency. Reducing/shutting-off FMS publisher queues
    using Application.xml config should help in removing the delay that
    you experienced.
    <Application>
    <StreamManager>
    <Live>
    <Queue enabled="true">
    </Queue>
    </Live>
    </StreamManager>
    </Application>
    Changing default setting to <Queue enabled="false">
    disables live publisher queues & aggregate messages ad
    therefore "the delay". (the delay should be reduced to <100 ms
    for a perfect kind of network or LAN)
    --> On client side: Do NOT use NetStream.setBufferTime API
    at all ! i.e. do not set any buffer on client side.; Flash player
    (upto 10, the current version) would try its best to keep the
    buffer around 0.1 seconds, which is the default value.
    OmicronPersei8,
    Which publisher are you using to publish the live stream?
    Sometimes , it is possible that a some fault at stream publisher
    may make buffer at flash player grow.
    I hope this would help !

  • How do I create a variable video delay of a live stream...

    I have a live video feed from my webcam in my Flash Application. I have a second video window next to it that I want to place a variable delayed video of the live stream. Therefore, I need to save the video stream in memory/disk and create this variable delay, say 5-60 seconds. As well as, continue to capture the live stream. The camera I am using suppots H.264 encoding.
    How do I create a variable length queue or buffer to hold the video stream coming into the flash application. Do I create a memory variable or write this to disk ? I have been looking over the ActionScript 3.0 documentation and I can not figure out how to code this either way ( as a memory variable or write to disk queue ).
    I want to be able to change the delay, view the delay stream in slow motion and scrub through the delayed stream.
    I would like to do this with out having to use Flash Media Server.
    Thanks,
    Bob

    I am sure it is practically impossible to accomplish that on the client side. Although theoretically it is conceivable to use NetStream.appendBytes() but it requires an extremely complex implementation.
    I suggest you look into FMS DVR capacities:
    http://help.adobe.com/en_US/flashmediaserver/devguide/WS236AE81A-5319-4327-9E44-310A93CA09 C6Dev.html

  • FMS server buffer delay 5-6 sec live stream ?

    FMS server buffer delay 5-6 sec live stream ?

    To reduce the delay you can try disabling aggregate messages.
    You need to set Streams/EnableAggMsgs in Server.xml and Client/AggregateMessages in Application.xml to false.
    See more about Aggregate messages here : http://help.adobe.com/en_US/flashmediaserver/configadmin/WS5b3ccc516d4fbf351e63e3d119f2925 e64-7ff0.html#WS5b3ccc516d4fbf351e63e3d119f2925e64-7feb
    Hope this helps.
    Thanks,
    Apurva

  • How to make delay Live Streaming ?

    Hi everybody,
    I follow this turorial make HTTP Live Streaming From Camera, using FMS 4.5, and FMLE 3.2, and I success.
    Now I need make delay (1~10 minutes) on HTTP Live Streaming. Example, current now my camera is capture, and client (end-user) can only see the signal (video) is obtained from the camera 10 minutes ago.
    P/s: I'm using Amazon Cloud, specify EC2 (include FMS 4.5)
    Can I do that ?
    Thanks,
    Huy Mai

    Hi Bharat,
    I read your link, and focus in MaxQueueDelay & MaxQueueSize.But its seem can not use in my case. I try config Application.xml follow it, and not success for my purpose , I think "MaxQueueDelay"  is specifies how to often the server will flush the message queue, in miliseconds.
    My puporse is client can view video, late 10 minutes than what is obtained current from camera
    Will I be missing anything?
    Mai Huy

  • Live Streaming/broadcasting and latency

    Hi,
    Can any one of you provide me with details on how much is
    latency experienced when live video and audio is streamed using FME
    + FMS + FP.
    Ex: A 256 kbps streaming.
    Does FME , FMS and FP uses buffering concept? if so, how can
    that be tweaked to deliver the live video with reduced latency. Is
    it possible to achieve a latency of less or equal to 1 second and
    how.
    We are using Web Cam, Windows Media Server, Windows Media
    Encoder and Windows Media Player to achieve the live streaming of
    events. But we end up having a latency of 8 to 15 seconds (in LAN).
    This is the major challenge we are facing. We are trying to
    find out if FME, FMS and FP can overcome the issues being faced.
    TIA,
    Mohith

    Hi Kevin,
    Thanks for the information.
    What will be the latency in second, from the point of
    capturing till the end user viewing in the FMP, over the internet.
    In some article i had seen the information which said that
    having 2 seconds of buffering would be appropriate for the end user
    to have acceptable limit (performance and quality) for viewing.
    Having said 2 seconds of buffering configured, it will sure
    add 2 seconds of latency.
    This for sure is acceptable if there is no user action to be
    expected (Ex: Telecasting of live sports event).
    Whereas for senarios like live auctions(of paintings) on the
    internet where participants can be present at the auction location
    as well as taking part in the auctioning through internet, every
    second of latency counts.
    your thoughts.
    Regards,
    Mohith

  • About Flash P2P live streaming from non-webcam sources

    Hello, I am a university student. Our lab is attempting to work on a p2p live streaming using flash p2p features. The media source is not from a webcam but a file from a certain server, which is not directly supported by any of the 4 methods flash player offers(posting, direct routing , object replication,and multicast.) As some of the forum threads mentioned, our method is to use NetStream.publish() a stream and use send("callbackname", data)  to all subscribers that have joined in a NetGroup. So we can use p2p transmission. Now here are our questions:
    1. We know from MAX 2009 that flash p2p camera video multicasting implements pull-push mechanism inside which makes full use of p2p features like buffer map exchange. If we use NetStream.send() API to send non-webcam source data, will it also make use of this pull-push mechanism to spread data among all peers(subscribers) with proper data exchange?
    or more detailedly,
    I saw the P2P Gaming Libs at flashrealtime.com. It uses DIRECT_CONNECTIONS when creating publish-used NetStream in order to send data with lowest latency. My question is if I do not use DIRECT_CONNECTIONS, than when the NetGroup grow large (1000), will those peers that are not direct neighbors to the publisher in the same group relay data to each other using pull-push via buffer map?
    2. I have written a sample app and use send() to deliver data only (NetStream.bufferTime = 0) without camera video and audio. When the publisher sends the data  in a "for()" stantence for 20 times, the subscribers can only receive about 8 of them. But when I set a timer and periodically send them(e.g., 500ms), the subscribers can receive them correctly. My questions are: Is the packet loss caused by UDP unreliability? Can this be solved by setting the NetStream.dataReliable = ture? Can this totally be solved by setting a timer? How to set the delaytime property in timer? Are all data sent are orderedly received?
    I'm very appreciated if you can answer my questions? thanks.

    1. NetStream.send() data is delivered in the order it was sent, whether in client-server, DIRECT_CONNECTIONS, or multicast mode.
    2. the lowest latency will be achieved with DIRECT_CONNECTIONS.  however, that isn't scalable to large numbers of recipients.  the P2P multicast system trades low latency for scalability.
    3. there are no plans to support a natural NetStream streaming source that's not a camera/microphone.  Flash Media Server can perform that function.
    4. you should never need to implement "bitmap exchange"; the object replication system handles all the communication needed to accomplish its function. typically you will divide a file into segments, giving each one an index number. object replication uses ranges internally, so the index numbers should be contiguous.  nodes that have indices use NetGroup.addHaveObjects().  nodes that want indices they don't have use NetGroup.addWantObjects().  nodes that have objects will send them to nodes that want the objects.  when a node receives an object, it's automatically removed from its "want" set; once the node decides the object is acceptable, it adds it to its "have" set, at which point it can answer requests from other nodes who still "want" it.  eventually every node will have all the pieces and not want any.  for an example, please see Tom Krcha's articles on using object replication:
       http://www.flashrealtime.com/file-share-object-replication-flash-p2p/
       http://www.flashrealtime.com/video-on-demand-over-p2p-in-flash-player-101-with-object-repl ication/
    5. please see Tom Krcha's articles.  for VOD you will probably want to use the "LOWEST_FIRST" replication strategy, as that may allow you to start playing earlier.  for general file replication you'll get better sharing if you use RAREST_FIRST.

  • Remove Lag from Live Streams

    I am publishing 2 live streams from a computer with 2 video capture cards in it and I get a lag every 30 seconds or so on the subscribers side. I have tried adjusting the camera quality and setMode properties but still the lag persists inside and outside the LAN, is there a way to create a buffer on the server or adjust the way the live stream is received on the subscribers side so there is no noticeable lag? I saw something about editing application.xml to adjust the queue and a suggested bitrate but not sure if this is applicable, here is the link:
    http://www.adobe.com/devnet/flashmediaserver/articles/dynstream_live.html
    Here is my setup:
    The publishing computer:
    2 PCI-e x1 cards, one takes S-Video (480i) and the other DVI (720p)
    Windows 7 64bit
    Intel i7
    6 GB RAM'
    GB NIC and Switch
    From the switch is one hop to a GB router and out to a 10 MB pipe which leads to our datacenter 30 miles away. The swf on this side just gets the 2 cameras, sets the quality to (0,80) and mode to (640,480,25,false) (I have played with these settings a little) and creates 2 lives streams on the FMS.
    The FMS:
    I am running Flash Media Interactive Server 3.5 on my own server with two 3.6 Dual Core Xeon processors and 4 GB RAM. This server resides in a Datacenter and has a 100 MB burstable pipe. From the FMS administration console I am barely using 4MB total bandwidth, 1% CPU usage, 2% RAM.
    The subscribing computer:
    I have used many different types of hardwired PC's within the same LAN and outside the LAN, results are the same.
    The swf on this side just creates 2 new video instances and attaches the 2 netstreams to them. They are placed side by side and the height and width of these videos are undefined.
    Does anyone know where this lag could be coming from, is there any settings I can adjust to improve performance while maintaining a minimum S-Video quality level?
    Thanks

    Hi,
    Thanks for the detailed information in your first post.
    Coming to the latency... It gets affected by various factors. The stream bitrate, FMS server side settings, subscriber's client side setting and on top of these the network bandwidth.
    I need to know the NetStream.bufferTime set at the subscriber's application. Try setting it to 3 when you issue the play, later you can increase it to 8 or so to stabilize the play back.
    Also can you try to subscribe to single stream and check if your client bandwidth is able to play back isngle stream?
    The link which you have mentioned below is a good reference to tune your server side settings.
    Regards,
    Janaki L

  • IOS RTMP live stream audio

    Hi guys hopefully some of you will be able to help me.
    I am trying to stream audio from a live RTMP feed using the NetConnection and NetStream classes. I've managed to get my app running no problem on Android, however I am having some major difficulties getting it to play the audio back on iPad. Interestingly it works in the device emulators when debugging, however I'm assuming this is not really an accurate representation. I've tried streaming the RTMP in both AAC and MP3, but with no luck from either. I can verify through debug that it has connected to the stream, however I just get no audio playing.
    Everything I've read about seems to suggest that this is possible on IOS as I'm only interested in audio and not video. Can anyone help?
    Code sample below (it's quick and dirty! ).
    THanks in advance!
    <?xml version="1.0" encoding="utf-8"?>
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark" title="Audio" creationComplete="init()">
              <s:layout>
                        <s:VerticalLayout paddingLeft="10" paddingRight="10"
                                                                  paddingTop="10" paddingBottom="10"/>
              </s:layout>
              <fx:Script>
                        <![CDATA[
                                  import flash.media.Video;
                                  import flash.net.NetConnection;
                                  import flash.net.NetStream;
                                  import mx.core.UIComponent;
                                  private var vid:Video;
                                  private var videoHolder:UIComponent;
                                  private var nc:NetConnection;
                                  private var defaultURL:String="[STREAM]";
                                  private var streamName:String="[STREAMNAME]";
                                  private var ns:NetStream;
                                  private var msg:Boolean;
                                  private var intervalMonitorBufferLengthEverySecond:uint;
                                  private function init():void
                                            vid=new Video();
                                            vid.width=864;
                                            vid.height=576;
                                            vid.smoothing = true;                           
                                            //Attach the video to the stage             
                                            videoHolder = new UIComponent();
                                            videoHolder.addChild(vid);
                                            addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                                            grpVideo.addElement(videoHolder);
                                            connect();
                                  public function onSecurityError(e:SecurityError):void
                                            trace("Security error: ");
                                  public function connect():void
                                            nc = new NetConnection();
                                            nc.client = this;
                                            nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                                            nc.objectEncoding = flash.net.ObjectEncoding.AMF0;
                                            nc.connect(defaultURL);      
                                  public function netStatusHandler(e:NetStatusEvent):void
                                            switch (e.info.code) {
                                                      case "NetConnection.Connect.Success":
                                                                trace("audio - Connected successfully");
                                                                createNS();                
                                                                break;
                                                      case "NetConnection.Connect.Closed":
                                                                trace("audio - Connection closed");                
                                                                //connect();
                                                                break; 
                                                      case "NetConnection.Connect.Failed":
                                                                trace("audio - Connection failed");                
                                                                break;
                                                      case "NetConnection.Connect.Rejected":
                                                                trace("audio - Connection rejected");                                  
                                                                break; 
                                                      case "NetConnection.Connect.AppShutdown":
                                                                trace("audio - App shutdown");                                 
                                                                break;         
                                                      case "NetConnection.Connect.InvalidApp":
                                                                trace("audio - Connection invalid app");                                   
                                                                break; 
                                                      default:
                                                                trace("audio - " + e.info.code + "-" + e.info.description);
                                                                break;                                                                                                    
                                  public function createNS():void
                                            trace("Creating NetStream");
                                            ns=new NetStream(nc);
                                            //nc.call("FCSubscribe", null, "live_production"); // Only use this if your CDN requires it
                                            ns.addEventListener(NetStatusEvent.NET_STATUS, netStreamStatusHandler);
                                            vid.attachNetStream(ns);
                                            //Handle onMetaData and onCuePoint event callbacks: solution at http://tinyurl.com/mkadas
                                            //See another solution at http://www.adobe.com/devnet/flash/quickstart/metadata_cue_points/
                                            var infoClient:Object = new Object();
                                            infoClient.onMetaData = function oMD():void {};
                                            infoClient.onCuePoint = function oCP():void {};        
                                            ns.client = infoClient;
                                            ns.bufferTime = 0;   
                                            ns.play(streamName);  
                                            ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
                                            function asyncErrorHandler(event:AsyncErrorEvent):void {
                                                      trace(event.text);
                                            intervalMonitorBufferLengthEverySecond = setInterval(monPlayback, 1000);
                                  public function netStreamStatusHandler(e:NetStatusEvent):void
                                            switch (e.info.code) {
                                                      case "NetStream.Buffer.Empty":
                                                                trace("audio - Buffer empty: ");
                                                                break;
                                                      case "NetStream.Buffer.Full":
                                                                trace("audio - Buffer full:");
                                                                break;
                                                      case "NetStream.Play.Start":
                                                                trace("audio - Play start:");
                                                                break;
                                                      default:
                                                                trace("audio - " + e.info.code + "-" + e.info.description);
                                                                break;
                                  public function monPlayback():void {
                                            // Print current buffer length
                                            trace("audio - Buffer length: " + ns.bufferLength);
                                            trace("audio - FPS: " + ns.currentFPS);
                                            trace("audio - Live delay: " + ns.liveDelay);
                                  public function onBWDone():void {
                                            //Do nothing
                                  public function onFCSubscribe(info:Object):void {      
                                            // Do nothing. Prevents error if connecting to CDN.    
                                  public function onFCUnsubscribe(info:Object):void {    
                                            // Do nothing. Prevents error if connecting to CDN.    
                        ]]>
              </fx:Script>
              <s:Group id="grpVideo">
              </s:Group>
    </s:View>

    Just an update on this for anyone coming along after me.
    I've managed to get this working on MP3 but not AAC (I guess AAC just isn't supported?).
    My problem was the buffertime. The docs seemed to indicate it shoudl be set to 0 for live streaming, however switching it to "1" solved my problem on the particular stream I was pointing at.
    So essentially justchanged the above line:
                                            ns.bufferTime = 0;  
    to
                                            ns.bufferTime = 1;  
    Would be great to find out if anyone has gotten AAC working however...

  • Live stream - buffer and replay

    Hi,
    i have this issue, which i'm pretty sure isn't feasible, but my boss insists that i give it a try, so here we go:
    i've developed a video player being used by a commercial TV channel, both for its VOD and live stream.  all the video content - live & VOD - is supplied via external CDN, over which i have little (or even no) control.
    what we're trying to achieve now, is while the channel's live stream goes on commercials break, to display our own (website's) ads.  we can tell when the break begins and when it ends, but we cant' know in advance how long it'll last.
    so our plan is to start running our own ads as the break begins, and when it ends - in case the ad is still running, buffer and 'record' the live stream, so when the ad ends the player will display the live stream, but from when its commercials break ended, with a short delay.
    is such a thing even possible?  i mean displaying live stream with a deliberate delay?
    thanks in advance for any thought or idea,
    eRez

    Hi,
    One way you can do this is to use php script to identify the user agent of the client (http://php.about.com/od/learnphp/p/http_user_agent.htm) and then generate dynamic webpages based on the client (HLS for iOS based clients and HDS for flash based clients). As Apache can only serve static webpages, you'll need to use CQ/MySQL/something else. I've personally not attempted to do so, but this may be a good starting point : http://www.ibm.com/developerworks/linux/tutorials/l-php/
    Hope this helps.
    Thanks,
    Apurva

  • ITunes Festival live streaming not working

    Every time I go to the iTunes Festival page in the iTunes Store I keep getting the message of:
    "This computer does not support iTunes Festival live streaming."
    Why not? Does it only work with apple computers (not windows)?  I wanna watch Paul Simon!!   =D
    -Michael

    Lucky for you skalarocks. It's 16th and I still cannot access any of the previosu concerts on iTunes!
    I contacted customer support who advised
    "I have done some research for you and found that there is a delay in the on demand streaming. "
    And then directed me here. I think I am leaning towards an earlier comment about Apple Techs not having a clue.
    I suppose they are giving it away so there is no profit in it they wont want to support a fix. Not goign to that much trouble after all skalarocks

  • Can you live stream RTMP and HLS

    Is it possible to live stream both RTMP and HLS with FMS 4.5?
    I want flash users to have the least latency possible using RTMP, and iOS users use HLS.
    If this is possible, how can I achieve this?

    Yes this should be possible..
    You can publish on netconnection rtmp://server-ip/livepkgr a stream say "livestream"
    On ios, you can susbscribe to http://server-ip:8134/hls-live/livepkgr/_definst_/livestream/livestream.m3u8
    On flash, you can subscribe to (Netconnection : rtmp://server-ip/livepkgr streamName: livestream)
    Hope it helps

  • Live Stream with Slideshow (jpg), possible?

    Hi guys,
    I'm wondering if the live encoder has the ability to sync images with a live stream. I'd like to store all the images in one folder and push through a call on each slide during the presentation for the image to appear on screen. Obviously it'll never be 100% live but a little delay isn't a problem.
    Accordent currently do this with PresenterPlus but i'm in search of a flash version which seems to be Live Encoder minus the slideshow.
    Thanks in advance,
    Blake

    On the Macintosh side there is the Camtwist app which allows you to do this and it works smoothly with FMLE. On the PC side I´m not sure but there just got to be more apps capable of this than on the mac side.

Maybe you are looking for

  • 'unable to send print data' on HP Laserjet 1536dnf MFP

    Hi there, I'm running an iMac with OSX 10.6.8. Via an USB cable I have attached a HP Laserjet 1536dnf MFP to the iMac. I also use this printer to print via wifi (i.e. through the iMac) with my MacBook Pro (with OSX 10.7.3). Suddenly today the printer

  • Clamshell Mode With 30" Apple Cinema HD Display

    Hello, How can I use my 17" MacBook Pro with my 30" Apple Cimema HD Display in clamshell mode (with lid closed). I can only use it in clamshell mode when the AC adapter is plugged in. When I try to wake the computer from battery, it turns on but then

  • "do not print" option

    Is there now a "do not print" option in numbers '09? I use numbers to print form. I 've used MS Excel until now, because the "do not print cell" option did not exist in numbers '08. Does it now?

  • Passing variables through the URL String

    I have a template and outside the basic html - all the content is grabbed from a db. I want to use 1 template to generate all of the other pages for the site. So basically, the only way to identify the page would be through the URL string. So, someth

  • Filename on Toolbar in Develop Mode

    When I minimize the filmstrip in Library mode, I can still see the filename in the toolbar content at the bottom. When I'm in Develop mode with the filmstrip minimized, their is no choice to show the filename on the toolbar content, nor does the file