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 advance
JayCharles,
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?
Similar Messages
-
SAP SNC Server Side Trust Setup Problems
Single Server BOE instalation of BOE 3.1 SP4 to Windows 2008 R2 machine
Sap version 720 Patch level 7
We have used kbase article 1500150 and 1396213 to run thorugh the configuration and testing and all has checked out.
We are unable to have the "roles" returned when any "DN" value is entered in the SNC name entry in the entitlement systems tab.
We have turned on RFC tracing and have run the JCO test The RFC trace file is below followed by the JCO test information. JCO test was run twice, once with each DN just to make sure.
Please help
=======================RFC TRACE===========================
ERROR file opened at 20111116 174146 Eastern Standard Time, SAP-REL 720,0,93 RFC-VER 3 MT-SL
T:3988 Error in program 'CMS': ======> SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=torsbid01.cpr.ca, GWSERV=sapgw00, SYSNR=00
LOCATION CPIC (TCP/IP) on local host with Unicode
ERROR GSS-API(maj): No credentials were supplied
GSS-API(min): No credentials found for this name (not logged
on) (USER
name="p:CN=BOEDEV, OU=BOBJ, O=CPR, C=CA"
TIME Wed Nov 16 17:41:46 2011
RELEASE 720
COMPONENT SNC (Secure Network Communication)
VERSION 5
RC -4
MODULE sncxxall.c
LINE 1439
DETAIL SncPAcquireCred
SYSTEM CALL gss_acquire_cred
COUNTER 55
T:2800 Error in program 'CMS': ======> SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=torsbid01.cpr.ca, GWSERV=sapgw00, SYSNR=00
LOCATION CPIC (TCP/IP) on local host with Unicode
ERROR GSS-API(maj): No credentials were supplied
GSS-API(min): No credentials found for this name (not logged
on) (USER
name="p:CN=BOEDEV, OU=BOBJ, O=CPR, C=CA"
TIME Wed Nov 16 17:41:46 2011
RELEASE 720
COMPONENT SNC (Secure Network Communication)
VERSION 5
RC -4
MODULE sncxxall.c
LINE 1439
DETAIL SncPAcquireCred
SYSTEM CALL gss_acquire_cred
COUNTER 4
T:4760 Error in program 'CMS': ======> SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=torsbid01.cpr.ca, GWSERV=sapgw00, SYSNR=00
LOCATION CPIC (TCP/IP) on local host with Unicode
ERROR GSS-API(maj): No credentials were supplied
GSS-API(min): No credentials found for this name (not logged
on) (USER
name="p:CN=BOEDEV, OU=BOBJ, O=CPR, C=CA"
TIME Wed Nov 16 17:41:46 2011
RELEASE 720
COMPONENT SNC (Secure Network Communication)
VERSION 5
RC -4
MODULE sncxxall.c
LINE 1439
DETAIL SncPAcquireCred
SYSTEM CALL gss_acquire_cred
COUNTER 3
========================JCO TEST=======================
E:\BusinessObjects\javasdk\bin>java -classpath E:\BusinessObjects\Tomcat55\share
d\lib\sapjco.jar com.sap.mw.jco.support.JRfcTest
SAP JCo Client Test *
Possible SAP JCo-Tests
1. RFC_SYSTEM_INFO
2. CONNECTION
3. PERFORMANCE
4. INHOMOGENEOUS STRUCTURE/TABLE
15. TRANSACTIONAL RFC
99. Exit
Your Choice....... :2
SAP JCo TEST - CONNECTION TEST
Send message and wait for ECHO/INFO
CONNECTION PARAMETERS:
Server is R/2, R/3 or External (2/3/F/E): 3
Use load balancing (Y/N)Y...............: Y
R/3 system name.........................: BIN
Message server..........................: binmain
Selected group..........................: PUBLIC
Working with SNC (Y/N)N.................: N
RFC-SPECIFIC PARAMETERS:
Working with ABAP debugger (Y/N)N.......: N
Use SAPGUI (Y/N)N.......................: N
RFC trace (Y/N)N........................: N
JCo trace level (0-10)..................: 0
SAP LOGON DATA:
Client..................................: 000
UserID..................................: SAPCPIC
Password................................: XXXXXX
Language (E)............................: E
#Calls of this JCo Test...................: 1
Do You Want To Test With These Parameters (Y/N).. :N
CONNECTION PARAMETERS:
Server is R/2, R/3 or External (2/3/F/E): [3] :3
Use load balancing (Y/N)Y...............: [Y] :N
Host name of an application server......: [binmain] :torsbid01.
cpr.ca
System number...........................: [53] :00
Working with SNC (Y/N)N.................: [N] :Y
SNC Library Name........................: [C:\Program Files\SEC
UDE\SECUDE for R3\secude.dll] :E:\SAP\Crypto\sapcrypto.dll
SNC name of partner program.............: [s:sample@hs0335] :p:
CN=BOEDEV, OU=BOBJ, O=CPR, C=CA
RFC-SPECIFIC PARAMETERS:
Working with ABAP debugger (Y/N)N.......: [N] :N
Use SAPGUI (Y/N)N.......................: [N] :Y
Automatically invisible SAPGUI (Y/N)N...: [N] :Y
RFC trace (Y/N)N........................: [N] :Y
JCo trace level (0-10)..................: [0] :10
SAP LOGON DATA:
Client..................................: [000] :200
UserID..................................: [SAPCPIC] :Crystal
Password................................: [******] :Welcome1
Language (E)............................: [E] :
#Calls of this JCo Test...................: [1] :
Do You Want To Test With These Parameters (Y/N).. :y
>>>>>>>>>>>>>>>> SAP JCo TEST - CONNECTION TEST >>>>>>>>>>>>>>>>
main [18:02:41:758]: [JAV-LAYER] INFO: JCo version is 2.1.10 (2011-05-10)
main [18:02:41:758]: [JAV-LAYER] JCO.setProperty("jco.trace_level", "10")
main [18:02:41:758]: [JNI-LAYER] RFC.nativeSetTraceLevel() with r
c = RFC_OK leave, [SUCCESS]
main [18:02:41:758]: [JAV-LAYER] JCO.setProperty("jco.trace_path", ".")
Stack trace of call to JCO.setProperty("jco.trace_path", ".")
at com.sap.mw.jco.JCO.setProperty(JCO.java:554)
at com.sap.mw.jco.JCO.setTracePath(JCO.java:791)
at com.sap.mw.jco.support.JRfcTest.correctProperties(JRfcTest.java:1047)
at com.sap.mw.jco.support.JRfcTest.initCall(JRfcTest.java:1074)
at com.sap.mw.jco.support.JRfcTest.runConnectionTest(JRfcTest.java:737)
at com.sap.mw.jco.support.JRfcTest.main(JRfcTest.java:203)
E:\BusinessObjects\javasdk\bin>java -classpath E:\BusinessObjects\Tomcat55\share
d\lib\sapjco.jar com.sap.mw.jco.support.JRfcTest
SAP JCo Client Test *
Possible SAP JCo-Tests
1. RFC_SYSTEM_INFO
2. CONNECTION
3. PERFORMANCE
4. INHOMOGENEOUS STRUCTURE/TABLE
15. TRANSACTIONAL RFC
99. Exit
Your Choice....... :2
SAP JCo TEST - CONNECTION TEST
Send message and wait for ECHO/INFO
CONNECTION PARAMETERS:
Server is R/2, R/3 or External (2/3/F/E): 3
Use load balancing (Y/N)Y...............: Y
R/3 system name.........................: BIN
Message server..........................: binmain
Selected group..........................: PUBLIC
Working with SNC (Y/N)N.................: N
RFC-SPECIFIC PARAMETERS:
Working with ABAP debugger (Y/N)N.......: N
Use SAPGUI (Y/N)N.......................: N
RFC trace (Y/N)N........................: N
JCo trace level (0-10)..................: 0
SAP LOGON DATA:
Client..................................: 000
UserID..................................: SAPCPIC
Password................................: XXXXXX
Language (E)............................: E
#Calls of this JCo Test...................: 1
Do You Want To Test With These Parameters (Y/N).. :n
CONNECTION PARAMETERS:
Server is R/2, R/3 or External (2/3/F/E): [3] :3
Use load balancing (Y/N)Y...............: [Y] :N
Host name of an application server......: [binmain] :torsbid01.
cpr.ca
System number...........................: [53] :00
Working with SNC (Y/N)N.................: [N] :Y
SNC Library Name........................: [C:\Program Files\SEC
UDE\SECUDE for R3\secude.dll] :E:\SAP\Crypto\sapcrypto.dll
SNC name of partner program.............: [s:sample@hs0335] :p:
CN=BOEDEVSERVER, OU=BOBJ, O=CPR, C=CA
RFC-SPECIFIC PARAMETERS:
Working with ABAP debugger (Y/N)N.......: [N] :N
Use SAPGUI (Y/N)N.......................: [N] :Y
Automatically invisible SAPGUI (Y/N)N...: [N] :Y
RFC trace (Y/N)N........................: [N] :Y
JCo trace level (0-10)..................: [0] :10
SAP LOGON DATA:
Client..................................: [000] :200
UserID..................................: [SAPCPIC] :Crystal
Password................................: [******] :Welcome1
Language (E)............................: [E] :
#Calls of this JCo Test...................: [1] :
Do You Want To Test With These Parameters (Y/N).. :y
>>>>>>>>>>>>>>>> SAP JCo TEST - CONNECTION TEST >>>>>>>>>>>>>>>>
main [18:04:58:041]: [JAV-LAYER] INFO: JCo version is 2.1.10 (2011-05-10)
main [18:04:58:041]: [JAV-LAYER] JCO.setProperty("jco.trace_level", "10")
main [18:04:58:041]: [JNI-LAYER] RFC.nativeSetTraceLevel() with r
c = RFC_OK leave, [SUCCESS]
main [18:04:58:041]: [JAV-LAYER] JCO.setProperty("jco.trace_path", ".")
Stack trace of call to JCO.setProperty("jco.trace_path", ".")
at com.sap.mw.jco.JCO.setProperty(JCO.java:554)
at com.sap.mw.jco.JCO.setTracePath(JCO.java:791)
at com.sap.mw.jco.support.JRfcTest.correctProperties(JRfcTest.java:1047)
at com.sap.mw.jco.support.JRfcTest.initCall(JRfcTest.java:1074)
at com.sap.mw.jco.support.JRfcTest.runConnectionTest(JRfcTest.java:737)
at com.sap.mw.jco.support.JRfcTest.main(JRfcTest.java:203)
E:\BusinessObjects\javasdk\bin>
Edited by: Joseph Borojevic on Nov 17, 2011 12:07 AMThe error in the logs: u201CNo credentials found for this name (not logged on)u201Du201D usually is a problem with case.
We used the sapgenpse get_my_name command and found that the id being referenced was being pulled incorrectly with wrong case.
The problem was the ID we logged into the remote sesison into the windows server with.
That ID is the ID that the commands are run under.
The sapgenpse seclogin u2013p BOESERVER.pse command takes the ID of the user you are logged into the session with.
We re-ran the command when logged in with the user with the correct case and it worked -
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? -
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> -
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? -
Generating feedback messages on server-side vs client-side?
Hello,
I am maintening a client/server app (Swing client, no Web pages), basically an order processing system. The biggest part of it is to verify the conformity of orders to a set of business rules.
As usual, some of the verification can be made early on the client-side, but most of the verification work is done on the server-side. My problem is, I don't find a very satisfactory way to generate the user feedback to be displayed to the user.
If I generate them as Strings (or HTML Strings) on the server, where the rules are checked, this constrains the way these can be displayed on the client, and makes maintenance of the human-readable strings awkward and risky (e.g. localization, or restructuring the messages, like sorting them by severity vs by affected entity).
If I generate them on the client, I need a class to vehicle the diagnosis form server to client, and this class and its usage tends to become awkward in itself.
Concretely:
The initial version generated human-readable strings on the server, which assumed the messages would be displayed as strings in a JOptionPane.
Moreover, the logic evolved to distinguish between Info, Warning and Error messages, to be displayed in different colors of course, so the Strings evolved into HTML Strings, still generated on the server.
Do you think this approach is safe?
I'm afraid a simple maintenance of the strings (like, sorting the errors by severity vs by affected entity, filtering the strings,...) becomes a server-side development, which is a bit more risky (I would have to review code ownership policies, VCS and code-sharing policies,... to let less experienced staff maintain the darn error Strings).
Moreover, if the client app evolve to display the errors in complex widgets (colors in a tree/table, with tooltips), the server-side generated HTML strings would be constraining : coloring or tooltipping Tree nodes would now mean parsing the String to extract the "error level" or the "affected entity", which is quite inelegant and inflexible.
My current idea was then to use a collecting parameter to collect validation messages on the server, and traverse them on the client:
I designed a naive ErrorList class, with methods such as addInfo(String), addWarning(String), addError(Strin), and the corresponding getErrors() and hasErrors()/hasWarnings() methods. I can then generate the Strings (or whatever widget fits better, such as a table) on the client side. Moreover, I can add the client-side messages to the bag...
All nice and well, but the customer requested that the error messages be formatted such as "The profile <profile name in bold> does not allow you to order service <service name in italics>".
To format that on the client, my ErrorList class should evolve so that for a given message, I know that the error is of type ("incompatibility between profile and service", that the service is X and the prodile is Y).
That forces me to add in some API (shared by the client and server) the list of error types, and the data each error type requires.
I can evolve my ErrorList API to break up messages into a DTO giving (type, affected entity, arg1, arg2,...), but anyway the server and client have to agree on what is arg1, etc... which is a hidden coupling.
Do you use and recommend such an approach for server-to-client feedback: a collecting parameter in which the server puts the "errors", and that the client traverses to display the messages)? In particuler, isn't the coupling hard to maintain?
Thansk in advance,
J.Presumably you are not over-engineering in that you
know that localization is a problem rather than that
in all possible worlds in might be.I appreciate your delicate questioning... I definitely have read much ruder ways to say YAGNI to a poster...
I do know that the customer will knit-pick to reword and reformat the messages. But I won't need to translate the messages to other locales. In that regard, I ackowledge my usage of the term localization is a bit liberal, but I think I should to extract the messages from the code, to be able to maintain them separately - keeping only experienced staff's hand in the server's core.
That is actually my question 1): from experience, is it worth the trouble to separate code and human-readable text, knowing that the text WILL have to be maintained?
Question 2 is about how to implement this.
In particular, the built-in MessageFormat templating engine, though originally introduced for i18n, actually suits my needs (including MessageFormat-built messages) and developing or using any other templating engine would probably be an overkill.
Given that there are two types of messages.
1. Fixed
2. Parameter driven.
In both cases you need to return an id which
identifies the message. The client has a locale
specific resource source which has a matching id.
From there a string is derived.
If the error requires parameters then the string has
formatting values in it and it s written with the
returned parameters. See java.text.MessageFormat.Yes. In some cases I don't know yet whether parameters will be displayed. I can conservatively assume the message requires a MessageFormat, and give all parameters (in my case, use rname, profile name, command id, service name, order date,...), whether thay are displayed or not in the final message.
Be warned you MUST deal with the possibility that a
id does not exist in the client, if so have a default
message that displays the id and any parameters.Good point.
"The customer name field can not be longer than 15
characters".
In the above the "15" would a parameter.Yes. The trouble is, you have to document somewhere (Sun suggests in the resource bundle file), that for error id #123456, the number of characters in in the '{0}', or in the {6}. I don't feel confident with that (this is the "coupling" part in my question 2�).
Thanks for your advices. -
Server-side or past-query resultset processing
Hi everyone :)
I have a question about efficiency. Basically, the application that I am writing retrieves resultsets from a data source. It is possible for an end-user to request that formatting be applied to certain columns in the resultset (eg: 1234 becomes $1234.00). As I see it, I have two options;
1. Apply the formatting in the SQL statement, thereby causing the formatting to occur on the server-side. The problem that I see with this is that formatting commands are different for every DBMS, and some don't even have them.
2. Retrieve the resultset in 'raw' form and apply java.text.Format subclasses to the resultset after it has been returned from the database (using update*(...) methods). This would 'standardise' the formatting, but is this efficient? My resultsets could be very large, so I am concerned about processing time.
Any opinions/suggestions would be greatly appreciated.
Thank you for your time. :)
Ben DeanyWell, not necessarily, no... my application may be on a client machine, sending requests to a remote data source. But point taken, it is a case of deciding which will be faster - so your question neatly sums up the problem.
And when I said that I was thinking about using the "update*" methods I was referring to the ResultSet methods. I realise that this is not a great solution; firstly because of potential overheads navigating the resultset, and secondly because it's dangerous - there is a chance the the database could get written back to...
So given that, the best solution might be to convert the ResultSet to a list of collection (or something similar) and then apply formatting to the values. (?)
That does require two loops (once over the ResultSet to convert it to a List, and a second one to apply formatting).
Ben -
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
-
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 !!! -
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". -
Problem with skin for server side buttons.
Hi,
I have a problem with the skin for server side renderd buttons.
In my CSS file I have :
.AFButtonStartIcon:alias
content:url(/skins/images/btns.JPG);
.AFButtonEndIcon:alias
content:url(/skins/images/btne.JPG);
.AFButtonTopBackgroundIcon:alias
content:url(/skins/images/btntb.JPG);
.AFButtonBottomBackgroundIcon:alias
content:url(/skins/images/btnbb.JPG);
JPG files in project are in dir "public_html/skins/images".
In WAR file,the JPG files are in "/skins/images" directory.
Skin configuration is correct because other settings from CSS
file are functioning fine after deploying.
But buttons are standard browser buttons and are not taking the images i have used.
In document provided by Oracle it says:
(Note: These icons must be specified using either context-image or
resource-image icons. Text-based icons are not allowed.)
I am nt able to understand what this means?Perhaps this thread will help.
JSF Skining Button Images
The doc should say whether or not the width/height is a requirement. But since it doesn't mention it, try adding a width and height.
- Jeanne -
Problem in Server side includes using Tomcat
Problem in Server side includes using Tomcat:
I am trying out small programs in servlet.
I get one example program for server side includes from net.
The code is:
<HTML>
<HEAD><TITLE>Times!</TITLE></HEAD>
<BODY>
<P>
The current time in London is!!! :
<SERVLET CODE="CurrentTime" codebase="../servlet">
<PARAM NAME="zone" VALUE="GMT">
</SERVLET>
</P>
</BODY>
</HTML>
I placed this test.shtml file in tomcat-home/webapps/ROOT folder and i kept the servlet in WEB-INF/classes folder.
I renamed the servlets-ssi.jar and i removed the comments for SSI in web.xml file.
When i run the servlet separately, i am getting the correct result. But if i run shtml file with the URL : http://localhost:8080/Test.shtml,
i am getting the result as:
The current time in London is!!! :
It is not invoking servlet program.
CAN ANYONE HELP ON THIS!
Thanks.Thanks...as u said I tried putting dir & found that
my file was saved as Ch1Servlet.java.txt instead for
Ch1Servlet.java......So that was a problem.Now I'm
able to compile.Oh, yeah. Notepad will do that to you. I think when you save in Notepad if you put quotes around the name "Whatever.java" then it won't add the .txt.
But on compiling I'm getting the following error
package java.servlet.* does not exist
package java.servlet.http.* does not exist
package java.io.* does not exist
Do u the reason for this??? The servlet stuff is java[b]x.servlet. For the io stuff, I don't know, I'd have to see your code. Either you have a typo or a corrupt installation. -
When I stream videos from my laptop onto my Apple TV via my iPad 2 using the Air Video app/server the video plays great however when I pause the video the Apple TV reverts back to the home screen within a few seconds and then when I want to restart watching the video I have to re-buffer the video. Is there any way I can stop the Apple TV from reverting back to the home screen when I pause the video I’m watching?
Welcome to the Apple Community.
Contact the developer of the Air Video app. -
Problem in mapping remoteobject on server side
Hello all
I am trying to use remoteobjects in Flex and PHP via Zend_AMF. I am having problem in mapping the data object in flex with the one in PHP.
Here's my code....
private function getAuthors(event:Event):void
serviceRO = new RemoteObject();
serviceRO.endpoint = "http://localhost/sampleproj/public/";
serviceRO.destination = "zend";
serviceRO.source = "MyService";
serviceRO.addEventListener(FaultEvent.FAULT, faultListener);
serviceRO.getData.addEventListener(ResultEvent.RESULT, resultListener);
Now, here's the server side directory structure that works for me....
webroot
+ sampleproj
++ public
+++ index.php (index file for the webapp)
+++ MyService.php (this is the service class)
+++ VOAuthor.php (this is the Value Object class)
Since the index file, and the service file and value object are all in same directory, it works.
This is what DOESN'T work....
webroot
+ sampleproj
++ services
+++ MyService.php (this is the service class)
++ vos
+++ VOAuthor.php (this is the Value Object class)
++ public
+++ index.php (index file for the webapp)
The error that I get is:
Channel.Connect.Failed error
Here's little of something that's going on in index.php
<?php
require_once ('C:/webtools/zendframework/zf/library/Zend/Amf/Server.php');
require_once ( realpath(dirname(__FILE__) . '/../services/MyService.php') );
$server = new Zend_Amf_Server();
$server->setClass("MyService"); // adding the class to AMF server
$server->setClassMap("VOAuthor", "VOAuthor"); // mapping the ActionScript VO to PHP VO
echo($server->handle());
?>
My guess is that in ActionScript code I have to do something with RemoteObject's endpoint.
Can anybody please help me out with this?
Thanks and Regards
ShiVikThe problem turned out to be in the php code.
Here's how I changed it
<?php
require_once ('C:/webtools/zendframework/zf/library/Zend/Amf/Server.php');
$server = new Zend_Amf_Server();
// the following methods provide the lazy loading of services and value objects
$server->addDirectory( realpath(dirname(__FILE__) . "/../services/") );
$server->addDirectory( realpath(dirname(__FILE__) . "/../vos/") );
echo($server->handle());
?>
Earlier I wasn't taking into account the change of directories for service and value object files.
Thanks and Regards
ShiVik -
Server side include problem in DW design mode
I am having issues with one computer out of three...Using DW
8 on Mac OS 10.4 Intel....
I have a server-side include set up to contain my navigation
(nav.shtml) inside of a DW template, and normally, the editable
regions can be worked in and the SSI area comes up blank until the
file is uploaded to the server (which is OK...).
On the third computer, however, the SSI area is actually
visible in DW, but the Editable Region containing the main content
area doesn't even show up, therefore we cannot work on web pages on
that computer. I know this must be a setting having to do with
using DW and a Mac as a web server, but I cannot find it! Anyone
have any clues?
Thanks so much!Can you describe teh details of the problem, please?
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
==================
"Phil Cornish" <[email protected]> wrote in
message
news:g8eosb$ijq$[email protected]..
>I have this same problem on a Win XP
machine...HELP!!!!!!!!!!
Maybe you are looking for
-
Office 2013, after windows/office updates recently, pdf add-in no longer works
We have a user who has Windows 7 Enterprise 64-bit, Office 2013 (32-bit) and Adobe Acrobat XI Pro. They used to be able to "save as pdf" from word, but can no longer do it and gets the error "word is running into problems with the 'acrobat pdfmaker
-
Not able to create an account!
Hello, I have made purchase of $800 in store yesterday and online $200. I got the rewards card yesterday but when i try to add to the account it says phone number does not match with the ID! Please help me out as this is irritating! 1000 points it se
-
Hi All I need to check if duplicate BP are getting created from WEB ui.Please guide me where configuration should be done. I need to populate if Duplicate BP is getting created.
-
How to replicated A table from R/3 to BW
Is there any way /solution to bring in one table from R/3 system to the bw system without using ODS? I need to bring in DRAD table from R/3 to bw and write a simple query on it and displayed it on the web ? If there is a solution for this? Thank you
-
Does apple even make an external isight and if so can it be used in ichat instead of the built in isight?