Media Server :: Dynamic Stream Switching From Server (not Client) Side
Sep 6, 2010
I understand how clients use bandwidth detection etc to dynamically switch streams via client calls with ns.play2( ... ), but I was wondering if it's possible to only ever use 1 initial ns.play( ... ) call on the client side, but let FMS server side logic that I write dictate which client sees what content. For example, I have 3 clients connected to my FMS server, all watching a live stream. I then decide I want clientA to see 'recordedMovieA.flv', clientB to continue seeing the live stream, and clientC to watch 'recordedMovieB.flv'.
This is a bump and additional thought. The leap to my 1500k file happens when initial bandwidth detection happens as bandwidth is high. Then the computer can not handle playback of a 1500k file. Is there a way to force the player to actually start playing the 300k stream before making any step up to a higher stream?[URL].. Bitrate of currently playing stream is displayed in big numbers on the page. To see the problem you will need an older laptop or computer which would have trouble playing back a a high bitrate video stream.
the stream is dynamically switching through the DynamicStreamItem list of the same file at different bitrates. It works but the switching seems to take way too long. When the default file at 300k loads, the bandwidth test happens and the 1500k file loads. Then on a slow CPU machine the file switches back down as it sees frames are being dropped. This switching is happening way too slowly, it takes a good 45 seconds to switch its way down through the various files from 1500k to 300k again on an old powerPC laptop which can only play successfully at that rate.
I have FMIS 3.5.I've installed it with pretty much all the default values.I haven't changed any of the settings in either the LIVE or the VOD applications.Dynamic Bitrate Switching is working well for VOD, but not working at all for LIVE streams.Doing a regular bandwidth detection on both the LIVE and the VOD applications give similar, high bandwidth results. However, the LIVE application NetStreamInfo.maxBytesPerSecond is showing a very low bandwidth capability of around maxBytesPerSecond = 19016, where as for the VOD its achieving around 637110.I can play a single LIVE stream of a high quality smoothly without any error.
I don't know if this is relevent but I'm getting some error messages occassionally in the log of the live application saying : Dropping application (live/_definst_) message. Clients not allowed to broadcast message.These messages aren't consistent, and don't coincide with trying to use bitrate switching.I have tried downloading the Adobe sample StreamSwitching. fla and it won't play the LIVE streams at all.Using the opensource Longtail Video player it just always defaults to the lowest stream.Here is an example: http:[url]....
Below is the code. When the swf is connected to FMS(the connection is successful) I use this application.user_so.send("enterContestGroup"); to call the client side mothed. You can see that in the client side I have defined the "enterContestGroup" mothed. However the fact is it doesn't call that mothed. Can anybody tell me what the error is
I have created a script for an Adobe FMS application to broadcast a playlist of video files as a live stream. (internet tv)
I am now working on a custom Flash-based video player to play my stream.
How do I send information from my server-side FMS application (main.asc) to the client-side video player? (e.g: title, duration of current video player)
i am currently playing around with a flash media server trial in combination with the flowplayer.All in all i am testing the performance and general functionality for the company i work for.Anyways, i am trying to search a way to check the bandwidth of a client ( server sided ) and redirecting him to the right video stream.Sure this could be done by the backend flash application, but its out intention to perform this check server sided.
I have an *.flv file on a FMS. When I play it on the client side the video plays just fine, but when I call Stream.play(filename, 0, -1, false) on the server side the video turns out really choppy.I both cases I use NetConnection to connect to an rtmp and NetStream to play the stream, but in one case I connect to a stream and request the server to play my file on that stream. Apparently that doesn't work with files? It works just fine for live streams.
I am recording a video and while recording I issue some NetStream.send("doSomething", params) commands from client side. When I am playing back this video I receive the doSomething events on client side. No problems so far.Can I receive those events on server side? I want to handle those events on server side. Not client side.
Why can't (or better yet) you kill client stream from server side - I seen some code that FME may call on server side like s= stream.get(streamOBJ.name); s.play(false); delete s; application.gc(); // over kill but still did not work
I try to switch or change a server-side stream, it starts lagging after 2 seconds of playing and sound disappears. Here are scenarios that result in that terrible lag:
1. I create server-side playlist with stream.play() with reset=false; when it is time to play the next movie in the playlist, it starts lagging after 2 seconds.
2. The same problems appears when I just switch streams. I installed FMF Feature Explorer and tried to launch SwitchStreams sample application: the same problem - server stream starts lagging after I switch streams with stream.play().
I tried on different servers (local and remote), with different players (debug player of FMS Admin Console, Standard Flash videoplayer component, OSMF player, Flex video player). I also tried all possible flv, f4v and mp4 file compression options for video files - still the same problem. I have also tried literally thousands of Application.xml settings: changing buffer, buffer ration etc. Is there any tip where I should search for a solution?
I have a problem with server side caching on FMS (3.5.3).I've taken the live main.asc and modified it in order to record streams on the server with timestamp names.as follows:
/* * application.onAppStart: * is called when application load. It contains Live (out of the box) * application specific initializations.
[code]....
I use FMLE (3.1) to stream to the server and all works fine when i have only 1 stream going at one only time.Now when i have several clients streaming to my server, the new client will stop the old client recording after a minute or so. tracing doesnt even flag the fact that the stream is stopping recording.
I am trying to create a flash player to stream an on online Internet radio station using FMS. I chose FMS after being told that I need RTMP server to extract the metadata. Our radio audio is being encoded using a DJ interface called SAM Broadcaster. But for some reason, it does not have an option to send over the stream directly to a Flash Media Server. Only options are either IceCAST or ShoutCAST. How should i setup the stream? Should it be Stream encoder>> IceCAST/SHOUTCast Server>>Flash Media Server>>Flash Player Client. Or should I setup Stream Encoder>>Flash Media Server>>Flash Player Client? Shouldn't Flash Media Server be an alternative to IceCast or Shoutcast? If that is the case, how do I send over the stream from SAM Broadcaster directly to Flash Media Server without restreaming through another streaming server?
I want to download files from the server side to client side without prompting a window to the user to download when any updates happen at server side.Right now I am using urlstream class but first file is downloading completely rest of the files contents downloading partially.
editCode sample taken from other post. Warning: it's a huuuge chunk o'code.
I read a blog article http:(url......)talking about switching between different bit rate video streams of the same video content on fly.But I can not find such ability in RTMP's specification.I am wondering if such function has to be implemented by users with ActionScript?
Finding faults in my reasoning, or expanding the discussion further. We are benchmarking FMS 3.5.x for live dynamic streaming and we have run across an issue. When throttling the client from a high bandwidth (1500kbps) to a low bandwidth (325kbps) via a bandwidth shaper (a physical firewall) it takes a very long (real-) time for the client to see the new stream-quality.
During the investigation of this issue we have narrowed this down to:
1. when transition is requested from client, the client-side buffer is 1/2 i.e. 4-5seconds. 2. if transition is request on a client with unlimited bandwidth, it takes about 6 seconds for the server to process, find an acceptable switching position and send a "transition.complete" event. 3. on the throttled client however, this event takes much longer.
I've shoved an array in a RSO serverside and now i need to update values in the RSO client side ...I tried the following but it doesn't work...I'm using actionscript 3.0
Has anyone been able to get bandwidth detection to work using the flvplayback control (client side - using AS3)? I have successfully got it to work using the video component with bwcheck and bwdone but I need to figure out how to do this with the FLV playback control. I am using FMS 3 and do not want to use the native bandwidth detection that comes with FMS. I need to detect the clients bandwidth and set the buffer time and what bitrate of a video (high, medium, low) I provide to a user based on their bandwidth.
In other words, is there an equivialant of bwcheck and bwdone that the flv playback can hook into to detect the client's bandwith?
what to set in FMS config files to help me with rebuffering on client side? The player (flash, rtmp) rebuffers a lot (approx. twice a minute) with no good reason - i've tried several players with various buffer settings, clients and server have sufficient bandwidth for the stream (live streaming) - so i guess this can be helped server side - can it and how?
is there a way to define a client side playlist like this:[code]but instead of a single videofiles for each playlistentry use dynamic streaming?I know how the DynamicStream class is working and how to set it up but i can't find any information if it is possible to combined those two techniques.
I'm trying to create a simple application that streams the webcam to FMS 4.5 (running on a Windows 7 machine), and then displays the published stream locally. Here's my code:
All traces in the event handlers show the NetConnection connecting successfully, and the netstream publishing successfully. However, I get no video output from this. I've confirmed this using the sample video player in FMS 4.5 as well. There is also a weird traffic pattern reported in the FMS Admin console.There is some traffic (~4K) when the NetStream first publishes, but after that there is no activity.
I know the FMS is good for streaming things video to clients and for clients to publish videos from their attached camera. Is it possible for a client to publish something other than a stream from a connected camera, for example, the contents of my swf stage? Is it possible to draw something like a text overlay onto a published stream?
Is it possible to stop a (live) Stream from playing for a user, but keep his NetConnection open for eg chat functionality?I only see a setBandwidthLimit to accomplish something similar to this, but then, if BW is set to 0, chat won't work.Why isn't there a built in feature to do something of seemingly common necessity like Client.stream.stop/change function to stop or change what video playback the client sees?
insert captions into a live flash video stream.[URL]this example uses a Flash client app wich can invoke something like video_nc.call("sendDataEvent",null,inputfield_txt.text);How can do this without any Flash client/environment ? (I of course still use an FMS 3.5) I would like to use a python (or php...whatever) piece of code to extract caption from VBI in the incoming video stream and insert it in the flash stream.
I am publishing video content to FMS with my program to livepkgr application. After i start publishing the vidoe content, files like .bootstrap, .conrol, .f4f and .meta are gettign created inside the livepkgr folder's my stream folder. But when i try to playback via OSMF player, the player is throwing error 1009. This happens for some few minutes. After some 4-5 minutes, the player start playing the live video content properly (.f4f file size is not getting updated for those few 4-5 minutes)
I developed an simple video player based on the osmf with a dynamic streaming.It works fine with the examples from Akamai, but if i take my Live-Streams the first stream loads but as soon as stream should switch to a higher bandwidth i get the error:ERROR : error ID=15 message=Playback failed detail=Failed to play (stream ID: 1).Has anyone an idea what i do wrong? Or what might be wrong with the videos or streaming?
I have a series of mp4 videos (H.236 @ 22 fps) streaming from an akamai FMS serve via RTMP protocol in flash player 9+ with AS 3.My goal is to create client side playlists that smoothly switch from one stream to another. I am creating these playlists using a series of netStream. play (filename,start,len) methods. If I don't use an offset for the start parameter, then the stream switches smoothly from one video to the next with not noticeable jump or jerkiness. However if I introduce a start offset, say a few seconds in, I start to see a quick little hiccup or pause between the seams as it switches from one playlist stream to the next.