NetStream.Play.InsufficientBW when streaming server side playlist
Hi
I am streaming pre recorded audio files (mp4) to an AIR client. I have tried two different solutions,
streaming the file directly with the NetStream.play("mp4:xxxxx.m4a") and creating a server side playlist, adding the
same sound clip and then streaming the playlist. The problem is, when streaming the playlist i get a few NetStream.Play.InsufficientBW, this does not happen when streaming the file direct. Both solutions uses bufferTime=1.0
I would like to use a server side playlist to implement a simple key solution so that the client dont know the full path to
the file, but instead sends a key to a custom server side function that looks up the file path and creates a stream for the client.
TIA
Ruben Chadien
FMS 4.0(linux)
Subscribing via playlist and playing file directly are two different things , as first one is live mode of play while other is playing recorded file - so the way streams are delivered are also quite different. Can you try setting higher buffer and see if that helps or if you don't want to set higher buffer, see if disabling AggregateMessages (you will find the tag in Application.xml under Live/Queue) helps
Similar Messages
-
Getting lots of "NetStream.Play.InsufficientBW" when there's plenty of Bandwidth
Hi All,
We've upgraded our production servers to 3.5.3 on Windows 2008, and now I'm seeing a lot of "NetStream.Play.InsufficientBW" statuses in our client app's log. The server is streaming a very low bandwidth live video/audio stream, and the client has more than plenty of bandwidth to play it. The stream doesn't exhibit any audio drops or skipped frames, and there are no message drops on the server side. We have had clients complaining of random disconnects. Does anyone know why I might be getting this message? If anyone from Adobe could help with this, I'd greatly appreciate it. Thank you.
Best,
-CostinHi Asa,
Thanks for the reply!
Unfortunately, I already had this in my Application.xml and it was still doing it:
<Queue enabled="false">
Any other work arounds at this time?
In addition, I'm getting reports that users are getting disconnected. After some arbitrary time, the server issues a "NetConnection.Connect.Rejected" for no reason, or at least none that I can find. Is this also a known issue? Please advise, since this is happening on our production systems. Should I roll back to 3.5.2?
Thank you!
-Costin -
"NetStream.Play.InsufficientBW" dispatched when there's plenty of Bandwidth
Hi,
I am working on the Audio-Video application having two Flash Media Server, One is Flash Media Interactive Server and another is Flash Media Streaming Server.
I am publishing stream on Flash Media Streaming Server and receiving stream from Flash Media Streaming Server. Flash Media Interactive Server publish stream to live folder
"rtmp://xxx.xxx.xx.xx/live" Flash Media Streaming Server from server side code.
when application.onPublish of Interactive server dispatch then the stream published by interactive server has been republished to live of the streaming server and from there client receive stream by
making connection with live folder of Streaming server. Stream from streaming server received successfully but .....
After few minute at receiving side receiving netStream Object dispatch "NetStream.Play.InsufficientBW" and stop receiving stream.
Please help if anyone know any solution.
Thanks.Hi,
I want to add more to above, that for testing purpose I am using Flash Media Developement server as the Flash Media Interactive Server and Flash Media Streaming Server.
Thanks -
Can i build custom p2p stream server-side app
Can i build custom p2p stream server-side app
Hi,
Here are some links that might help you :
http://help.adobe.com/en_US/flashmediaserver/devguide/WSa4cb07693d123884520b86f312a354ba36 d-8000.html
Thanks,
Apurva -
NetStream.Play.StreamNotFound when connecting to my AMS
When I try and connect to the video on my AMS using Flash and AS3 I keep getting NetStream.PLay.StreamNotFound
The exact same video streams on the AMS home page.
I can stream from http://www.helpexamples.com/flash/video/cuepoints.flv but nothing from own server in flash.
Here is my code with the IP Address removed
import flash.media.Video;
var video:Video = new Video();
this.addChild(video);
var mNetConnection:NetConnection=new NetConnection();
mNetConnection.connect(null);
var mNetStream:NetStream=new NetStream(mNetConnection);
video.attachNetStream(mNetStream);
mNetStream.play("rtmp://000.000.000.000/vod/mp4:sample1_1500kbps.f4v");
mNetStream.client=this;
mNetStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStreamStatusEvent);
mNetStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
function onNetStreamStatusEvent(event:NetStatusEvent):void
if (event.info.code == "NetStream.Play.Start")
trace("NetStream.Play.Start");
if (event.info.code == "NetStream.Play.StreamNotFound")
trace("Video Not Found");
if (event.info.code == "NetStream.Buffer.Full")
function onMetaData(metadata:Object):void
function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);Ok founbd a way to adjust the code to work with a f4v file over rtmp.
However I am still not able to stream from an f4m. Can someone help?
import flash.media.Video;
var nc:NetConnection = null;
var video:Video = null;
var mNetStream:NetStream = null;
video = new Video();
this.addChild(video);
nc=new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
nc.connect("rtmp://000.000.000.000/vod");
nc.client = this;
function onNetStatus(event:NetStatusEvent):void
//Trace the value of event.info.code
trace( event.info.code );
/*Check for a successful NetConnection, and if successful
call publishCamera(), displayPublishingVideo(), and displayPlaybackVideo()*/
if( event.info.code == "NetConnection.Connect.Success" )
mNetStream=new NetStream(nc);
video.attachNetStream(mNetStream);
mNetStream.play("mp4:sample1_1500kbps.f4v");
mNetStream.client=this;
mNetStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStreamStatusEvent);
mNetStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
function onNetStreamStatusEvent(event:NetStatusEvent):void
if (event.info.code == "NetStream.Play.Start")
trace("NetStream.Play.Start");
if (event.info.code == "NetStream.Play.StreamNotFound")
trace("Video Not Found");
if (event.info.code == "NetStream.Buffer.Full")
function onMetaData(metadata:Object):void
function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event); -
Stoping a client live published stream, server side
Hello buddies,
I have a very very important and urgent question.
Suppose in some client a stream is being published live with
the name 'A'. now, if some other client should and tries to publish
with the same name ('A'), it will encounter a 'NetStream.BadName'
status error code, to avoid that I think there should be some way
to stop the stream('A') server side, and then let the 2nd client
starts publishing with name 'A'. if so, how can I stop 'A' stream
on server?
Thank you so much for any helpLet your server call a function (on the first client that
publishes the stream A) that stops the publishing and shows show
local message to that client e.g. "another client has started to
publish a stream with the same name".
It's unclear why you want such a system because you don't fix
the problem ; you fix the symptoms. If you let clients publish a
stream related to their loginname for example you will always have
unique streams on your server.
If you let them connect to an unique instance of your
application you don't even have the problem of non-unique
stream-names because inside every instance you can publish stream A
again.
Viewing clients would connect to each instance if they want
to see that particular stream, like
rtmp://yourserver.com/appnameXYZ/instancenameABC/A
where A is the name of your published stream in instance
"instancenameABC" , which is a child of application called
"appnameXYZ". -
Server-Side stream play problem
Hello,
I have a problem, which I am trying to solve for many nights already without any success.
Everytime 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?
Thank you in advanceJayCharles,
Thank you for your reply.
But in my case the client is subscribed to a stream on the FMS. And that stream is switching video files and handling the playlist. So, I don't see any possibility to listen to onPlayStatus on a client-side, as my client is only playing live stream and has no clue what is happening on the server side.
Or I am wrong? -
How to create a Playlist in flash Streaming Server
Hi all,
am new in the flash streaming server. I download the Flash streaming server and install it its work fine.
I want know about the following question:
how to stream the video using playlist?
What is the format of the playlist?
can i create a playlist from visual studio.Net and pass the value to the player?
awaiting your reply,
Thanks in advance.If you have bought Streaming Server License - you want to be able to create any server-side playlists as you cannot write you own customized code on Streaming Server.
However what you can do is create client-side playlist using client-side code, place all your files in media folder of VOD and use them in your playlist. Playlist is nothing but set of plays which are queued up so you just need to issue NetStream plays with last parameter "reset" set to false - this is so that you do not reset your previous play.
So it would be like
ns.play("abc",0,20,true);
ns.play("xyz",0,30,false);
ns.play("uvw",0,20,false); -
NetStream.Play.Stop and Complete fired early on RTMPE streams
Hi there
I am experiencing an issue with playback on RTMPE streams. after investigation it seems that the FMS server is firing the NetStream.Play.Complete message at random points, indicating that a stream has ended. This is happening and random points during the stream, not even close to the end.
The order of Status messages is as follows:
Thu Oct 20 2011 04:15:17 PM :: NetStream.Play.Start : status
Thu Oct 20 2011 04:32:40 PM :: NetStream.Play.Stop : status
Thu Oct 20 2011 04:32:40 PM :: NetStream.Buffer.Flush : status
Thu Oct 20 2011 04:32:58 PM :: NetStream.Buffer.Empty : status
Thu Oct 20 2011 04:32:58 PM :: onPlayStatus : NetStream.Play.Complete
As you can see roughly 17mins into playback...although the stream is 1 hour 24mins long
I have tested this numerous times, and each time it is at a different point in the stream.
Intermittently the NetStream.Play.InsufficientBW warning is being fired prior to NetStream.Play.Stop.
I am using a player built on OSMF 1.5.
Just need to know why these messages would be fired and how to handle them
Thanks
SteveHi Steve,
Thanks for the information. Did you check with flvcheck tool to see if the file is a valid FMS file ? If not, can you do that please ? -
Streaming server 3.5.1 no script works except main.far (VOD)
we own multiple FMS servers, interactive and now we installed
a few Streaming servers.
during the install process we provide the license key
for the Stream server's we got from the adobe representatives
in our country, and all seems well until we try to move an already used VOD
script to the /opt/adobe/fms/applications/vod/ folder
the script is named main.asc and replaces the main.far
which comes with the out of the box VOD application.
this script works on all Interactive servers but fails
to work on the Stream servers.
it simply fails silenty, no logs and no errors are written anywhere....
so i thought the problem might be some feature i try to invoke
in the code while streaming server does not support it, so i stripped
the main.asc to be practically empty..
application.onAppStart = function(){
trace("application start");
application.onAppStop = function(){
trace("application end");
application.onConnect = function( client ) {
trace("accepting connection");
application.acceptConnection( client );
application.onDisconnect = function(client){
trace("application.onDisconnect");
yet the problem persists, perhaps we have wrong license key?
does the streaming server allow scripting at all???
ps: when i change the licence key of the streaming server to
Interactive server's Key, all starts working...
Any ideas ?Hi,
The behavior you encounter with FMS Streaming Server edition is expected. The streaming edition only offers streaming capabilities as outlined athttp://www.adobe.com/devnet/logged_in/dmotamedi_fms3.html .
As small gist from there :
Flash Media Streaming Server (FMSS) is a brand new product offering. This low-cost server is limited to live and video-on-demand (VOD) applications only. It cannot be used for multiway applications such as video chat, server-side playlists, or server-side recording. Flash Media Streaming Server does not support the new plug-in architecture or server-side ActionScript API. Edge or Origin configurations are not available in the streaming server either.
So if you are looking for server-side scripting support and other features like C++ plug-in framework etc to build interactive/ collaborative applications you need to choose the Flash Media Interactive Server.
Thanks
Mamata -
Live video stream play permission on server-side
I have a live video stream application one-to-many for
example, and i want to send video only to few clients, not to all.
Like:
quote:
application.onConnect = function(client, canSeeVideo) {
// canSeeVideo = boolean
this.acceptConnection(client);
if (!canSeeVideo) client.receiveVideo(false);
// and after this, can be swich to TRUE or FALSE ?
client.receiveVideo(true);
I only want to do restriction for Video, from server-side
with FMS, or if can't be possible.. how can i put for example a
black screen on video ? :) and after can be removed, etc...1.
necesary client.receiveVideo() and client.receiveAudio()
server-side functions
Thank you fmslove for you trying to help me but
client.readAccess property can NOT be set after client
connection was accepted, and for me is useless. Any other
solution(s) ? i strong recomend to Adobe FMS dev staff to implement
this feature because is refering to security client-side solution
from server-side. I have bad experience with users trying to modify
the Flash Player (plug-in) run memory and set values for my swf
without my accept, and is nothing that i can do from client-side
like NetSream.receiveVideo(false) on many-to-many or one-to-many
live A/V stream.
2.
a necesary server-side video encoder solution better than
Sorenson Spark
If in future FMS staff from Adobe will implement this
necesary security feature on server-side like a copy of
NetSream.receiveVideo() function from client-side, i will be happy
if i see a solution to encode LIVE video stream on server-side
because
Sorenson Spark video encoder built-in Flash Player (plug-in) is
very old and unuseful.
If this can't be possible i hope the future Flash Player
version (10) will have a better video encoder built-in than
Sorenson Spark !!! -
Hi,
I am stuck on one random issue that I really need your help.
I got a bunch of live stream from FMLE, say: "FMLE_channel1", "FMLE_channel2", "FMLE_channel3". And then on the server side, I created several corresponding republished stream called "channel1", "channel2", "channel3".
On periodical basis, we call Stream.get("channel1").play("FMLE_channel1", -1, 10, true) every 10 seconds. Similar things were done on the second channel & third channel.
Soon after the above Stream.get("channel1").play() call, I should get the following events in sequence:
info :NetStream.Unpublish.Success
info :NetStream.Publish.Start
info :NetStream.Play.Reset
info :NetStream.Play.Start
In the above case all are happy. Clients can view channel1, channel2, channel3 well.
But then after a while, one of the three channels, in most case it would be channel1, will not be viewable. With the server trace info, I found that after the Stream.get("channel1").play() call, only the following two events exists:
info :NetStream.Unpublish.Success
info :NetStream.Publish.Start
i.e. I was missing the play.reset and play.start event.
I further checked and confirmed that the FMLE was publishing all three channels fine to the server. I was able to view the "FMLE_channel1" from flash clients, but not the republished "channel1".
Can anyone help to solve the problem please? the version is FMS 3.5.0. Thanks.Thank you very much for your effort in helping.
1. How do I check the said logs?
2. I will upgrade to 3.5.4 and have a try. Unfortunately I am out of town now and could not do it in the new few days.
3. When you asked about repeatedly calling of Stream.get(), are you implying some kind of memory leaks? Or do you have other implications in your mind? We are handling an array of broadcasting channels. Of course, we could've saved the handles in an array, but we did it the way as it is now for the sake of simplicity.
4. Another clue/observation: say for a F4V clip of 44 seconds (e.g. name it as example.f4v). If I call Stream.get("channel1").play("mp4:sample.f4v", -1, 45, true) at one point, and after 45 seconds, if I do another call of Stream.get("channel1").play("mp4:sample.f4v", -1, 45, true), "channel1" will show no video after the second call. Please note in this example, the video length is actually 44 seconds, but I treat it as if it is 45 seconds.
Your continued help will be highly appreciated! -
How to know the status of stream played using NetStream.Play method ?
I am playing stream data published by third party server
similar to FCS by creating NetStream object and calling Play method
on it. Now the problem is, sometimes I am not able to view the
published stream by playing it using Play method. Also it does not
call OnStatus method of NetSteam. How can I know the status(or
result) of Play method ?
Note: NetConnection gets created successfully. I get status
of NetStream.Play.Start / Stop when I put local flv as a first
parameter to Play methodHi
There are SQL reports in the following zip which has SQLDeveloper reports for runtime objects such as mappings and process flows;
http://www.oracle.com/technology/products/warehouse/htdocs/Experts/owb_sqldeveloper.zip
Cheers
David -
Client side playlist with dynamicaly streamed items possible?
Hey,
is there a way to define a client side playlist like this:
ns.play( "stream1", 0, 30 );
ns.play( "stream2", 10, -1, false );
ns.play( " stream3", 0, -1, false );
ns.play( "stream4", 30, 120, false );
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.
Thanks for any suggestions.Yes upto a certain extent you can achieve it, see below approach if it suits you. You can have playlist as xml file and each video tag will represent single item in playlist. So suppose you have xml file with video tags as below:
<videoList vodurl="rtmp://localhost/myapp">
<video>
<label>flv:stream</label>
<data>stream1,stream2,stream3</data>
<bitrate>100,200,350</bitrate>
</video>
<video>
<label>mp4:stream</label>
<data>mp4:stream1.mp4,mp4:stream2.mp4,mp4:stream3.mp4</data>
<bitrate>100,200,350</bitrate>
</video>
</videoList>
Then you need to create dynamic stream item("dsi") as below for each video tag and create array of "dsi".
var dsi:DynamicStreamItem = new DynamicStreamItem();
dsi.addStream( "mp4:stream1.mp4", 100);
dsi.addStream( "mp4:stream2.mp4", 200 );
dsi.addStream( "mp4:stream3.mp4", 350 );
ds.startPlay( dsi );
Then iterate each item of array, while you are playing first item of array then based on netstatus messages like "NetStream.Play.Complete" you can decide to move on to next item in array. So in this way you can create client side playlist.
Regards,
Amit -
Current buffer got cleared when netstream.play.transition happen for rtmp
recently we have came across this issue where everytime when the dynamic stream switch happen the buffer will be reset back to 0. This is causing the player often run into buffering state.
We are not sure what is the cause of this, since there were little change in the code on the client side, only change that might be related is that we have upgraded the stream server to adobe flash media streaming server 4.
Anyone have any idea what might be causing this?I have added a bug to the bugbase requesting that Adobe upgrade the Netstream for Androids to support the bufferTime property.
https://bugbase.adobe.com/index.cfm?event=bug&id=3648268
Please add your vote if you are having the same issue.
Maybe you are looking for
-
3rd party order processing GR movement type
Hi In 3rd party order processing the goods are delivered to customer from vendor directly, but for billing purpose we do the GR at plant level(against purchase order)>invoice>Billing Physically stock is not delivered to the plant, so when we do the G
-
New Macbook Pro set up is stuck on iCloud Drive upgrade screen
I am setting up a new macbook pro and have chosen the option to upgrade to iCloud Drive. After choosing to continue with that option, the spinning ball has been active for quite sometime. Is this normal? I am afraid to force restart as it is a brand
-
Total result & formula result is wrong in query out put
Hi BW gurus I have issue with total result and formula result my requirement Formula for hours is ( total time / Counter / 60) hours column displaying 14.2 2.4 3.4 Total - 5.6 not 20 then I setp calculate results to SUM now total
-
Hi Nokia and HERE Transit. The Nokia HERE Transit app seems to have a corrupted database for Brisbane, Australia since the weekend. Bus journeys no longer appear in search results. And train information is incorrect and not valid. If your development
-
CL_ABAP_STRUCTDESCR
Hello, I have to create a internal table like the structur of a DB-Table of a remote system. Therefore i wanted to something like the following l_r_descr_ref ?= cl_abap_structdescr=>describe_by_name( p_name = l_active_table_name ). CREATE DATA l_