Why is server side Stream.onStatus never called?
application.onPublish = function (client, p_stream)
p_stream.onStatus = function(infoObject){
//never called
trace(infoObject.code);
Tested in FMS 3.5, why is it not working as expected?
application.onPublish = function (client, p_stream)
p_stream.onStatus = function(infoObject){
//never called
trace(infoObject.code);
Tested in FMS 3.5, why is it not working as expected?
Similar Messages
-
Server side function not get called after dispatching cairngorm event second time on same page
Hi All,
I am facing a urgent issue regarding cairngorm event. Actually my page contain 3 button add,delete,save
and clicking of any button I do the respected functionality. For ex:
I click the add button & on clicking of add button I fire a cairngorm evnt & after getting response from server side that the record is added
I displayed a message that the record is added & update the data source.
After addition of the record , with out going to other page if I perform the same functionaly(Like adding another record) on same page the cairngorm
event not call the server side function - after debugging I find out that cairngorm event reach to the corresponding excutecommand function & called that function but it is not calling my server side function & I also din't get any error message .
I dont know why the server side function not get called?. similarly if I try for delete or update case the same things happend. Only for the first time it works properly but not for the second time.
Could any of you please tell me why the cairngorm event not calling the server side function.
Thank you for your kind assistance.
Regards,
UjjwalOkay, well I think I've worked out the problem.
In ASP.NET we would typically bind repeating controls such as DataLists and Repeaters manually using <i>Control</i>.DataBind(), because we're usually using a separate class library containing collections for our objects. Seems the SAP Table control doesn't like this approach.
I changed the code so that the databinding is specified on the control, and call the Page's DataBind() method and it all worked fine.
One tip: because the collection I used to bind to is in a separate class library, I receieved a <i>BC306523: Reference required to assembly MyAssemblyName...</i> message, even though I had a reference to the assembly in my project and the DLL is being properly deployed. To fix this, you must include the following directive at the top of the component's ASCX file:
<%@ Assembly Name="AssemblyName" %> -
Why the server side behavior of LoadVars() not consistent?
In my server side script for FMS app,there is such code:
var lv = new LoadVars();
var params = new LoadVars();
lv.send("http://mysite.com/registerVideo.php", params, "POST");
The expected behavior is that the request will be as if sent directly from the browser,thus SESSION information is not lost ,which is the exact behavior for my computer.
But it's not the case for my boss --- session information is lost for him.
Why the server side behavior of LoadVars() not consistent?
What do I need to do to make sure session information is not lost @ server side ?Oops,why this feature has always worked like charm for me only??
Below is the server side request caught from firebug:
POST registerVideo.php
http://mysite.net/registerVideo.php
200 OK
mysite.net
115ms
ParamsHeadersPostPutResponseCacheHTML
Response Headersview source
Server
nginx/0.7.67
Date
Tue, 29 Mar 2011 14:45:31 GMT
Content-Type
text/html
Transfer-Encoding
chunked
Connection
keep-alive
Vary
Accept-Encoding
X-Powered-By
PHP/5.2.14
Expires
Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control
no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma
no-cache
Content-Encoding
gzip
Request Headersview source
Host
mysite.net
User-Agent
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13
Accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language
en-us,en;q=0.5
Accept-Encoding
gzip,deflate
Accept-Charset
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive
300
Connection
keep-alive
Cookie
pass=angel333; user=liying123; PHPSESSID=8m966mbd070tsdqqodnncesbj5
Source
Referer: http://mysite.net/flash/main.swf?sessionId=8m966mbd070tsdqqodnncesbj5 Content-type: application/x-www-form-urlencoded Content-length: 35 name=test&record=live&action=insert -
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? -
OnStatus never called in FlashLite 3.0 ?
We have a small app which displays Video clips to the user, then at the end,
displays some message. The problem is, the callback "onStatus" does not seem to be called
on clip complete (as it should) on any player version.
On the other hand, on FL2.x, the calledack is called correctly in case of errors, for example, when the file is not
found, etc ...
Here after the basic code sequence
myVideo_vd.onStatus = function(o:Object)
if (o.level)
trace("Video Status Msg (" + o.level + "): " + o.code);
else
trace("Video Status Error: " + o.code);
myVideo_vd.play("videos/01.3gp");
Is this a known problem, or are we just missing something ?
regards,
Jacques.Hi Jacque,
This is a limitation of the player, the onStatus event is never fired because the underlying real player doesn't provide these events. This is also true for volume control and other status events around streaming.
FLV works much better because this codec lives in software inside the Flash Player.
Mark -
Issues with server side recording in FMS
I have FMS installed on Windows XP machine.
I am recording using the server side Stream class. This
creates a FLV but when I play it back it does not play though it
has created the file under the dir in FMS.
After a lot of research I figured out that the recording is
done properly but I have to restart my FMS before the play back.
After which the play back goes on smoothly.
Can any one help me with this. I need to know if this is a
known issue or else I have to do something on stream at the the
server side after recording so that I can play it back immediately.**Bump**
I am having a similar issue. I have an app that will redirect
the stream to the same application but a different instance. The
ns.publish method is called for recording and the file will write
correctly. However, after I stop publishing and go in to play the
file in flv player, it doesnt play back. Looks like the meta data
is there but no video. Is there a specific procedure to close off
the file or something that I'm not performing? -
Problem inserting records after execution of server side code
Hello,
I've created a server-side function for duplicating a master record and it's details. This function has two input parameters that define the new unique key of the master record. Because the user has to supply the new unique key, there is a possibility that the unique key already exists.
The server-side function is being called from a form module. This form module contains all the code needed for opening / closing and aborting the HSD transaction. The form also enables users to add new master records manually.
If the server-side function is called from within the module there are two possible outcomes:
1, the unique key already exists and the HSD error message window is displayed.
2, the unique key does not exist and the records get duplicated.
If I try to add a new master record in the form after a failed duplication process, I get a form message informing me that NULL cannot be inserted into the ID column. (The primary key.) BTW updates work just fine. However, if I call the server-side function again and the duplication process is succesfull, I can again insert a new master record in the form succesfully.
I'm assuming that this problem has something to do with the TAPI package because I use TAPI insert calls to insert the master / detail records when duplicating. A workaround for this problem is (obviously) to check if the supplied unique key already exists in the database before calling the server-side function.
I however am concerned a bit because a lot of program functionality has been implemented in server-side functions and procedures. So I would like to know if anyone has had the same problems and possibly knows if there is a generic solution to this problem.
Greetings,
Marco.Marco,
Can you make a test case for me and send it to me? It looks like we might have a bug and I would like to investigate.
Regards,
Lauri
[email protected] -
Server side buffering settings for video
I pump my video (both live streaming and VOD) through a popular CDN. They control the server side (FMS) settings. I can request that they change things and they do so and let me know when I can test.
I'm wondering about server side buffering settings. Is there supposed to be some sort of coordination between the buffering settings there and the client side buffering settings I implement in my video player?
The reason I ask is I get wierd buffering behaviors in my client side player under certain conditions and there doesn't seem to be much to adjust there other than the NetStream.bufferTime property.
For instance, if I set the bufferTime property in my client viewer to 10 seconds, the player just seems to ignore it and starts playing the stream right away or within a second or two. Other times I see crazy values in the bufferTime property, like 400 seconds (I check the property's value about every second).
I'm wondering if there are some FMS settings that are overriding or are not working well with my client side buffer settings. Is this possible?Not sure how to get this code to you. There is no option here to attach a file. Trying to post inline here. Hope it comes out ok.
This is a simple player. The simplest. No frills. Just insert your RTMP url to your FMS and your stream name in the string variables "rtmpURL" and "streamName" at the top, compile and run.
Here is a deployment of this player connected to my CDN where the file is currently playing:
http://dcast.dyventive.com/cast/simple_player/player.html
Also, attached is an image I took when I ran the program and hit the refresh button in the browser. Note the giant bufferLength numbers in the debug panel.
Again note, I do not get this problem linking directly to a recorded file. I see this problem when playing a file on a server or with a live stream.
Can you see anything obviously wrong?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
backgroundColor="#333333"
initialize="init()">
<mx:Script>
<![CDATA[
//Note: the method "connect()" on line #49 starts the area with the important connection code
import mx.containers.Canvas;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
private var vid:Video;
private var nc:NetConnection;
//Path to your FMS live streaming application
private var rtmpURL:String = "Insert your URL"; //Will be used to connect to your FMS
private var buffer:Number = 5; //NetStream.bufferTime property will be set with this.
private var streamName:String = "Insert your server side stream name here"; //This determines the channel you're watching on the server.
private var ns:NetStream;
private var msg:Boolean;
[Bindable]
private var canvas_video:Canvas;//Will display some live playback stats
private var intervalMonitorBufferLengthEverySecond:uint;
private function init():void
vid=new Video();
vid.width=720;
vid.height=480;
vid.smoothing = true;
uic.addChild(vid);
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.connect(rtmpURL);
public function netStatusHandler(e:NetStatusEvent):void
switch (e.info.code) {
case "NetConnection.Connect.Success":
netconnectionStatus.text = e.info.code;
reconnectStatus.text = "N/A";
trace("Connected successfully");
createNS();
break;
public function createNS():void
trace("Creating NetStream");
ns=new NetStream(nc);
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.play(streamName);
ns.bufferTime = buffer;
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function asyncErrorHandler(event:AsyncErrorEvent):void {
trace(event.text);
//Set up the interval that will be used to monitor the bufferLength property.
//monPlayback() will be the funciton that will do the work.
intervalMonitorBufferLengthEverySecond = setInterval(monPlayback, 1000);
public function netStreamStatusHandler(e:NetStatusEvent):void
switch (e.info.code) {
case "NetStream.Buffer.Empty":
netstreamStatus.text = e.info.code;
textAreaDebugPanel.text += "Buffer empty:\n";
trace("Buffer empty: ");
break;
case "NetStream.Buffer.Full":
netstreamStatus.text = e.info.code;
textAreaDebugPanel.text += "Buffer full:\n";
trace("Buffer full:");
break;
case "NetStream.Play.Start":
netstreamStatus.text = e.info.code;
textAreaDebugPanel.text += "Buffer empty:\n";
trace("Play start:");
break;
//Get the current ns.bufferLength value, format it, and display it to the screen.
//"bufferLen" is the key var here.
public function monPlayback():void {
var currentBuffer:Number = Math.round((ns.bufferLength/ns.bufferTime)*100);
var bufferLen:String = String(ns.bufferLength);//Here is the actual bufferLength reading.
//Use it to show the user what's going on.
pb.value = currentBuffer;//updates the little buffer slider on the screen
bufferPct.text = String(currentBuffer) + "%";
bufferTime.text = String(ns.bufferTime);
bufferLength.text = String(ns.bufferLength);
//Dump the bufferLen value to the debug panel.
textAreaDebugPanel.text += bufferLen + "\n";
trace("Buffer length: " + bufferLen);
public function onBWDone():void
//dispatchComplete(obj);
]]>
</mx:Script>
<mx:Canvas id="monitor"
y="10" right="50">
<mx:Text x="0" y="25" text="Buffer:" color="#FFFFFF"/>
<mx:Text x="0" y="50" text="Buffer Time:" color="#FFFFFF"/>
<mx:Text x="0" y="75" text="Buffer Length:" color="#FFFFFF"/>
<mx:Text x="0" y="100" text="NetConnection netStatus:" color="#FFFFFF"/>
<mx:Text x="0" y="125" text="NetStream netStatus:" color="#FFFFFF"/>
<mx:Text x="0" y="150" text="Reconnect:" color="#FFFFFF"/>
<mx:HSlider x="145" y="25" id="pb" minimum="0" maximum="100" snapInterval="1" enabled="true"/>
<mx:Text x="100" y="25" height="20" id="bufferPct" color="#FFFFFF"/>
<mx:Text x="145" y="50" height="20" id="bufferTime" color="#FFFFFF"/>
<mx:Text x="145" y="75" height="20" id="bufferLength" color="#FFFFFF"/>
<mx:Text x="145" y="100" height="20" id="netconnectionStatus" color="#FFFFFF"/>
<mx:Text x="145" y="125" height="20" id="netstreamStatus" color="#FFFFFF"/>
<mx:Text x="145" y="150" height="20" id="reconnectStatus" color="#FFFFFF" text="N/A"/>
</mx:Canvas>
<mx:UIComponent id="uic"
x="50" y="10"/>
<mx:TextArea id="textAreaDebugPanel"
width="300" height="300"
right="50" top="300"
valueCommit="textAreaDebugPanel.verticalScrollPosition=textAreaDebugPanel.maxVerticalScro llPosition"/>
</mx:Application> -
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". -
HI,Why every five minutes, the server - side NetStream.publish failure
RTMP spread to the FMS, and then create netGroup and NetStream objects on the server side, then the NetStream.publish (), the beginning of everything is normal, but after five minutes, very strange happens to be five minutes, the client node receives less thanstream had, and I monitor the status of this server-side NetStream no change is to publish the start, why the five minutes it will automatically stop publishing flow RTMP stream has been no problem in the transmission
i assume, from your post, that you are using FMS and are publishing a multicast stream.
if you are using the "Flash Media Development Server", prior to release 4.5, multicast streams time out after about 10 minutes. as of release 4.5, multicast streams time out after about 30 minutes. to see this and other limits of the Development Server, see:
http://www.adobe.com/products/flashmediaserver/helpmechoose.html
if that is not the problem, then if you are writing your own server-side scripts, perhaps you are not anchoring a NetStream, Stream, or NetConnection object properly and it is being destroyed by the garbage collector.
if you need more help with Flash Media Server, you should direct your questions to the Flash Media Server forums. the Codename Cirrus service is not based on FMS. -
Strobe Media Playback Server-Side ABR live streaming
Does the Strobe Media Playback support server side Adaptive Bit Rate (ABR) streaming for live RTMP streaming? If so, how?
http://osmf.org/configurator/fmp/
Use this configurator, and use the same code it generates with your strobemediaplayback.swf
Also make sure the domain where strobemediaplayback.swf is being called from and resides, is in your /webroot/crossdomain.xml file, or it will not work. -
I have just bought an iMac, and when I had my PC I had all my mp3 music on external hard drive and used to stream using software called ps3 server and tveristy which used to pick up on my Roberts radio via network wi fii and on my iPad via AirPlay. How can I do the same with iMac as this software isn't compatible
To install apps from developers Apple doesn't recognize go to Security and Privacy in the System Preferences and change Allow apps downloaded from anywhere
-
Calling PL/SQL from Server Side Rule
Hi there,
I'm wanting to call a PL/SQL procedure from a server side rule created within collaboration suite using the oesrl command line utility. I have seen examples of the XML rule which should do this together with the appropriate PL/SQL
<account qualifiedName="UM_SYSTEM" ownerType="system">
<rulelist event="relay">
<rule description="Retention Rule" active="yes">
<condition negation="no" junction="and">
<condition>
<attribute tag="rfc822to"/>
<operator caseSensitive="no" op="contains"/>
<operand>instigate.com</operand>
</condition>
</condition>
<action>
<command tag="call"/>
<parameter>RulesPackage.archive_message</parameter>
<parameter>test1</parameter>
<parameter>Archive</parameter>
</action>
</rule>
</rulelist>
</account>
The above should call the Procedure RulesPackage.archive_message when an email to anyone at instigate.com arrives in OCS. I have written and tested an appropriate package. However, I have been unable to get the rule to execute and call my PL/SQL when I send an email to trigger it.
I have written rules which do not invoke external packages without any trouble.
I believe the problem is that I need to register the PL/SQL package with the rules engine somehow, before the rule can find it, but I am uncertain how to do this, or even if that is indeed what I need to do.
Any help would be most appreciated as the documentation doesn't go into too much detail.
I am using OCS R2.
Regards
OliverCould you please check the structure of the procedure "RulesPackage.archive_message" ? It may fail due to procedure structure.
The structure should be similar to the below example
PROCEDURE archive_message
(p_event IN NUMBER,
p_sessionid IN NUMBER,
p_msgobj IN es_mail.mail_message_obj,
p_param1 IN VARCHAR2,
p_param2 IN VARCHAR2,
p_status OUT NUMBER) AS
BEGIN
/* Code for Archving */
END;
Relevant URL:
http://download-west.oracle.com/docs/cd/B25553_01/mail.1012/b25459/ad_email_custact.htm#sthref677 (Please check Step 2 of "A Custom Action Written in Java") -
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
-
Making a RPC Call with Complex Server-Side
Hey, I'm currently trying to write a distributed program using a simple web service call. I've tried to set up Axis RPC by following a tutorial and got it working, but the problem is I end up calling a JWS file on the server and at that point I'm not sure how I can tap into the rest of my server code to do complex server-side work.
Basically I want the ability to call other Java classes I write, but for some reason I can't figure out how to make them show up as valid classes to the JWS file. Throwing the files in the same directory under Tomcat doesn't do anything, and I haven't managed to do it with a JAR files either. Are there any tricks to getting JSW files to refer to regular Java classes, or am I using the wrong technologies altogether?
Thanks in advance,
GraemeI didn't personally develop the back end, but basically think a lot of classes including inheritance and all that, there are database calls (I think JDBC and Hibernate), and overall just a fair bit of code.
If I make other Java classes part of the same project, the jws file can't seem to find them. If I put a CallServer.jws and OtherClass.java in the same directory, writing OtherClass object = new OtherClass(); gives a compile error. But maybe I'm misinterpreting what you mean by "make them part of your web service project".
Maybe you are looking for
-
Can I use aperture library on more than one machine
My situation is thus: I have a Macbook Pro on which my Aperture Library resides, in wherever Aperture decided to put it when I bought the software. I now have a iMac, which obviously will be better than the Macbook for photo editing. But I want to be
-
Hi Experts, We got a new requirement from Finance department for a report.They got a requirement like this. 1.Invoice Document 2.Invoice amount 3.Invoice date 4.All Taxes in detail for each invoice 5.Vendor Name and Vendor Number 6.Reference Document
-
How to POST Message to HTTP Adpater?
HI @, I have a requirement where I need to post XML message directly to HTTP adapter from webdynpro application. I have tried using HTTP Client availbale and it works fine. But I need help on how to achieve the same in Wed Dynpro for Java? Regards
-
Sir, I am a Lenovo user since 7 months, I have a technical doubt . Is it good to run on battery power or to use a charger when I use it in my home? Please tell me how to use my laptop efficiently . Is it good to running on AC adapter or on battery fo
-
I would like to be able to login to Iplanet using a URL like this: http://server:port/<exec>?user=john&password=doe or like http://user:password@server:port/<some_params> I knew how to do it with SIMS 4, but with Iplanet 5.2 I just don't have a clue.