FLVPlayback dynamic buffering
This is a multi-part request.
I'm looking for a way to dynamically buffer progressive video
using the AS3 FLVPlayback component. I am doing bandwidth detection
using a SMIL file. I would like to set buffer via the clients
bandwidth. I do not have FMS.
I've "heard" that the AS3 FLVPlayback component has this
built in. That is, only starts playing after it concludes what it
will take to play the video from start to end. I'm having a hard
time verifying this through documentation.
So, I'm looking for help on dynamic buffering, and if anyone
knows if the AS3 FLVPlayback component offers this ability out of
the box.
I don't use FLVPlayback (I write my own players) but for sure
AS2 or AS3 the code you are trying to use is not good because it
doesn't use FLVPlayback.
There is an example in CS3/CS4 of using FLVPlayback.
Here is documentation for the componenet:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html
Similar Messages
-
I'm tring to implement a dual buffering strategy. (Flash
Media Server 3, Flash Player 9 and Actionscript 3)
I have a simple player with FLVComponent, a standard skin
using the vod application.
I put in the first frame the following code:
videoPlayer.bufferTime = 8;
videoPlayer.source = root.loaderInfo.parameters.url; (I use
the variable url to pass the video name)
I read your article but I don't know how to use the code. I
tried to copy and past below my to lines and didn't work.
Please help me.
Thanks,
Thiago Prado
function initConnection() {
// Create a NetConnection
nc = new NetConnection();
// Define onStatus event handler
nc.onStatus = function(info) {
trace("Level: "+info.level+" Code: "+info.code);
// Initialize the stream after the connection is successful
if (info.code == "NetConnection.Connect.Success") {
trace("--- connected to: " + this.uri);
startStream(); //Inizialize the stream
// try to connect, to be changed with your app path
nc.connect("rtmp://localhost/vod");
function startStream() {
//Define stream and buffers parameters
stream_name="test_stream"; //your stream - How can I pass my
variable url to stream_name?
startBufferLength=2; //keep this in the range 2-4+
expandedBufferLength=15; //arbitrarily high
// create a netstream
ns = new NetStream(nc);
// Define onStatus event handler
ns.onStatus = function(infoObject:Object) {
if (infoObject["code"]=="NetStream.Buffer.Full"){
ns.setBufferTime(expandedBufferLength);
trace("set expanded buffer");
if (infoObject["code"]=="NetStream.Buffer.Empty"){
ns.setBufferTime(startBufferLength);
trace("set start buffer");
// attach the NetStream to a video object
// change from videoObj to your istance name if needed
videoObj.attachVideo(ns);
ns.setBufferTime(startBufferLength);
ns.play(stream_name, 0);
initConnection();
stop();I don't use FLVPlayback (I write my own players) but for sure
AS2 or AS3 the code you are trying to use is not good because it
doesn't use FLVPlayback.
There is an example in CS3/CS4 of using FLVPlayback.
Here is documentation for the componenet:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html -
Attach flvplayback dynamically - when is it initialized
hello,
i am trying to create a class that would use the flvplayback
component. i do not want to place the component on the stage as i
need to deal with that dynamically, and i need to reuse the class
in many projects.
however i find problems, as even if the flvplayback is
attached on the stage, it has not been loaded yet. so i tried using
a setinterval to deal with that, but it did not always work as the
delay seems to change depending how many processes are going on at
the same time
i stumbled upon the ready property (or event? i have a hard
time understanding the event handling), but it seems like it does
not do me any good since the event is never called.
can anybody help me? it would be greatly appreciated
here are the docs i relied on so far
doc on the flvplayback component
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveD ocs_Parts&file=00003477.html
doc on the flvplayback.ready property
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveD ocs_Parts&file=00003584.html
doc on using flvplayback with attachmovie
http://flashmove.com/forum/archive/index.php/t-27852.html
you may see the code at the following link:
http://jansensan.net/icongo/videoPlayerClass.zipHi Fabien - I had tried to follow and implement the code Liam referenced, but was unable to get it to work.
I ended up grouping the products instead. The good thing was, product grouping accommodated different shipping packaging sizes. (I don't believe attributes will allow you to do this?)
Some of the possible downsides to using product groupings include:
Possible "duplicate content" SEO concern - which I believe I addressed (I granted search engines access to these grouped product pages via one url only).
Updating product details with product grouping can be more time-consuming, compared with using attributes. However, I do not have a lot of groups or products, and do not anticipate many updates.
I think the way the system displays product attribute prices by default is very confusing to the visitor. Hopefully you will be able to make sense of the code reference provided in Liam's link. Otherwise, maybe one of the BC pros would be kind enough to help walk you through the price update code for attributes. Good luck on your site, Fabien. -
Dynamic Buffering Based on Bandwidth and Datarate
I'm trying to determine an initial value for NetStream.bufferTime based on the client's calculated bandwidth and the video's bitrate.
As far as I can tell you can't do this, because you must have an initial buffer set BEFORE you call NetStream.play() (or use the default 2 seconds) and FMS does not call NetStream.onMetaData, where one would normally find the videodatarate, until after NetStream.play() is called.
Even if you modify NetStream.bufferTime during the onMetaData call back it doesn't effect when the video starts playing or when the NetStatus event registers "NetStatus.Buffer.Full".
Therefore my question is:
How do I find the Video Data Rate BEFORE I call NetStream.play?
-Or-
How do how do I reset the initial bufferTime before acctual play back begins and the NetStatus event fires with "NetStatus.Buffer.Full"I think you are right. Without playing the stream you cant decide it datarate.
-
Use buffering and psp with datasocket-VIs and without any binding and shared variable node
Hello,
I'm using LV 8.5.
I'm trying to develop a multiplatform (windows and mac os x) and multi-computer application. II want to get executables running on each device, communicating through the network. Communication process includes datas (such as images) and events messages (something like "Hello, I got an error" or "youyou, my work is done" or "I'm hereeeee!!!!...."). I do need a communication without any loss of data.
I worked a lot and wanted to test a psp-based design, without any binding nor shared variable node (mac os...) using data socket VIs and SVE buffering.
I managed to :
- deploy shared variable library dynamically (even in an executable)
- communicate between two PCs with datasocket VIs
However, I never managed to enjoy buffering (even locally with one VI doing the deployment and writing datas and another one for reading).
I worked hard (dynamic buffering setting, dynamic buffering watching like in http://zone.ni.com/reference/en-XX/help/371361D-01/lvconcepts/buffering_data/ and in the example "DS send image" and "DS receive image" in the labview examples, trying to use "?sync=true" in the URL, etc...) but no way to get things work.
I attached a jpeg of an example of receiver and sender. I use wait commands in both receiver and sender to test buffering
Receiver do receive datas (the last written) but buffering doesn't work.
Did somebody did that before ? (better than me...)
Thanks
Bo
Attachments:
Sender.JPG 87 KB
Receiver.JPG 96 KBHello,
Indeed my problem has been solved. My error : in the While loop of the receiver VI, I always reactualize the PacketsMaxBuffer and OctetsMawBuffer parameters, what resets the buffer and make it appears ineffective.
I now set the PacketsMaxBuffer and OctetsMawBuffer values only once at the begining of the VI and the psp buffering works perfectly.
Sorry for the desagreement...
Bo -
How to add fast forward - rewind functionality using flvplayback in as3
hello,
i am using flvplayback (dynamically add from as3), now to add fastforward - rewind functionality in it.
Thanks,
Vishal ParekhThe docs say the inBufferSeek is intended for "Flash Media Server 3.5.3 and Flash Player 10.1" or higher and does not work in AIR3.0 for iOS. Do you meet those requirements? They call that protocol RTFMP.
The doc also explains that when inBufferSeek=true, and you seek() or step(), an event is dispatched if it was successful. You should see if these events fire.
From the docs:
When inBufferSeek=true and a call to NetStream.seek() is successful, the NetStatusEvent info.description property contains the string "client-inBufferSeek".
When a call to NetStream.step() is successful, the NetStatusEvent info.code property contains the string "NetStream.Step.Notify".
If you don't see those events, you know you have an issue. -
Hi,
I am evaluating flash media server for usage of our camera
application. Reason that I wanna use this is that mediaserver has
ability for dynamic buffering.
My question: is it possible to set up dynamic buffer if it
not a pre recorded file. For example I am making a video of 60
minutes and want to broadcast straight away - I save the file on
mediaserver and mediaserver needs to broadcast staright away.
People with a slow connection can start viewing the video after
lets say 10 minutes, mediaserver calculates the connection. So when
we finish recording they finish watching ten minutes later.
Can anybody please help with this question and also if it is
possible how to make the application?
thanks JulieHave a look at the following article. It's was written for
recorded streams, but I don't see any reason why you couldn't apply
the same technique to a live stream.
http://www.adobe.com/devnet/flashmediaserver/articles/fms_dual_buffering.html -
Playback pauses and audio sync issues with live video stream
I'm seeing playback pauses about every three seconds and audio sync issues with our live demo stream when using the OSMF/Strobe player. It happens on both our 2Mbps 720p stream and our 480p 750Kbps stream so it does not seem to be related to higher resolution/bandwidth streams. It also happens if I point directly to a stream asset or if I point to a .f4v with both streams listed for dynamic so it does not seem to be related to dynamic streaming specifically.
The same live streams play back very well without pauses or audio sync issues in the Akamai's dynamic player and even slightly better with JW 5.2.
I have viewed the OSMF/Strobe playback on three different laptops of various age (3 months to 2 years) and two are Windows and one is Linux. I have also tried the various buffering options on the Flash Media Player Setup and Strobe setup and it has not made a noticeable difference.
To see the stream with the Akamai player, go to: http://live.kulabyte.com
To see the stream with the OSMF/Strobe player, go to: http://live.kulabyte.com/osmf
I do not have JW set up for public viewing yet, but the two above show the distinct difference.
We are really hoping to start pointing our customers towards the OSMF player because of the support provided by the community and Adobe, but we have to get the quality of the playback to be acceptable first.
If someone has ideas on debugging I can PM the actual video assets to you.
Thanks,
TimHi Tim,
You need to add this setting:
dynamicStreamBufferTime=8
The actual value can be higher or lower. The best practice is to use a value that is twice the keyframe distance. Anyway, try different values and see which performs the best for your content.
I know that the setup page does not contain this option and it is not documented in the UserGuide. We simply missed it. Sorry.
Also note that the dynamic buffering algorithms are not being used for dynamic streaming content. I tried to explain this here:
https://sourceforge.net/adobe/smp/wiki/Dynamic%20Buffering/
Looking forward to your confirmation that this solved your issue.
-Andrian -
Audio sync issues with Flip video and PSE9?
If I upload directly from my Flip video camera to PSE9, the audio may start out as synchronized, but as the video progresses the audio becomes more and more out-of-sync. If I use Quicktime to upload the video and export it as a Quicktime movie, the audio synchronization is fine in PSE9. I have tried ALL the tech support suggestions, but no luck. Does anhyone else have this problem? I am running Windows 7.
Thanks,
RonHi Tim,
You need to add this setting:
dynamicStreamBufferTime=8
The actual value can be higher or lower. The best practice is to use a value that is twice the keyframe distance. Anyway, try different values and see which performs the best for your content.
I know that the setup page does not contain this option and it is not documented in the UserGuide. We simply missed it. Sorry.
Also note that the dynamic buffering algorithms are not being used for dynamic streaming content. I tried to explain this here:
https://sourceforge.net/adobe/smp/wiki/Dynamic%20Buffering/
Looking forward to your confirmation that this solved your issue.
-Andrian -
Datagram test shows low success rate with Exalogic configuration (IB)
The success rate from our Coherence datagram test is kind of low with Exalogic configuration
## with IB interface ##
throughput: 1014 MB/sec
16236 packets/sec
received: 300000 of 779167
missing: 479167
success rate: 0.38502657
## with 1G ethernet ##
ethernet throughput: 97 MB/sec
69141 packets/sec
received: 1600000 of 1885461
missing: 285461
success rate: 0.84859884
The listener Coherence node has
bond0 Link encap:InfiniBand HWaddr 80:00:00:4A:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.34.91 Bcast:192.168.39.255 Mask:255.255.248.0
inet6 addr: fe80::221:2800:1a0:ebf9/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:65520 Metric:1
RX packets:23621494301 errors:0 dropped:0 overruns:0 frame:0
TX packets:23218231154 errors:0 dropped:1779 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:41399991507456 (37.6 TiB) TX bytes:36726866951912 (33.4 TiB)
The Coherence publisher node has
bond0 Link encap:InfiniBand HWaddr 80:00:00:4A:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:192.168.34.90 Bcast:192.168.39.255 Mask:255.255.248.0
inet6 addr: fe80::221:2800:1a0:fb55/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:65520 Metric:1
RX packets:23781098798 errors:0 dropped:0 overruns:0 frame:0
TX packets:24186487356 errors:0 dropped:2229 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:39474424472056 (35.9 TiB) TX bytes:44425819197666 (40.4 TiB)
Is there anything needs to be tuned/configured to use InfiniBand? Or any suggestions to resolve the issue?
Thanks in advance.Hi,
Is important that the IB NIC have it's MTU set to the maximum allowed value of just under 64KB to get the best performance.
Try throttling the test to just under the data rate the test achieved by adding -txRate to the test parameters. You can continue to lower the throttle until packet loss is less then 1%. Coherence will do the same thing automatically to avoid the packet loss. Also you should plan on running a number of nodes on each blade to help spread the network load over more CPUs.
For further information about the -txRate option, please take a look at http://docs.oracle.com/cd/E18686_01/coh.37/e18679/tune_datagramtest.htm
Also, as can be seen at http://docs.oracle.com/cd/E18476_01/doc.220/e18480/solaris.htm note that Coherence on Oracle Exalogic dynamically adjusts buffering to the MTU of the interface. To use dynamic buffering, you must run the following parameters:
ndd -set /dev/ip ip_reass_queue_bytes 16777216
ndd -set /dev/tcp tcp_max_buf 8388608
ndd -set /dev/udp udp_max_buf 8388608
This applied for Linux Exalogic too.
Hope this helps.
Thanks,
Cris -
Dynamic live streaming on AMS 5 on AWS buffering and skipping
I'm having a lot of trouble getting Adobe Media Server 5 on Amazon Web Services working with live dynamic streaming, I've done a of this on Flash Media Server 4.5 and am trying to duplicate what I have done there on AMS since I got an email that FMS 4.5 will be dropped soon.
I have tried replicating my own setup from FMS 4.5 and I have also tried using the base install and following Adobe's tutorial. I get the same results in both events.
First, the HLS streaming appears to work fine. I've watch it on several iOS devices with no problem.
I use StrobeMediaPlayback for HDS streaming and that's where there are problems. The streams usually play fine at first and even transition well, then after a few minutes I start getting a lot of buffering and then video skipping. The longer it goes on, the more it buffers and the larger chucks of video get skipped. Sometimes I also get and error that says "TypeError: Error #1009"
I am using FMLE and both it and the server are set to use absolute time.
Any help would be appreciated!!Hi,
Welcome to Adobe forums.
May I know the FMS URL and the stream name you are using inside the FMLE and make sure you have full permissions on Adobe media server folder. And also check the streams folder inside the livepkgr folder and see if you are getting all the files created.
And would you mind if you can send me the logs folder at [email protected] so that I can analyse this issue at my end.
Regards,
Puspendra -
FLVPlayback buffering entire FLV before playback
I've been trying to help a company with their video playback. They are using the FLVPlayback component to play some FLV files and also use XML caption files.
For some reason some FLV videos are insisting on buffering the entire file before it begins to play. Then there are other FLVs that start playing just fine and buffer the remainder during playback.
I've tried updating their FLVPLayback component to the 2.5 version but I get the same results.
Could it have something to do with how the FLV files were created? I will suggest that they have all of the videos encoded again but I want to make sure that would actually effect the playback. I've never seen anything like this but honestly I usually make my own FLV player. But since they insist on using this component I am trying to work through it with them.
Thanks!Look into the MOOV ATOM issue. The behaviour you describe is typical of a video file with the movie atom placed at the end of the video file rather than the beginnning. When placed at the very end, the file will not progressive download but must be completely downloaded first.
More info here:
http://renaun.com/blog/code/qtindexswapper/
http://www.youtube.com/watch?v=8c8oqNX4b3k
Best wishes,
Adninjastrator -
Controls in skin of dynamically loaded FLVPlayback component don't work
can be viewed here: http://jimslounge.com/publicDomain/captainVideo/
my code:
public function WebSite() {
this.stage.frameRate=60;
com = new FLVPlayback();
addChild(com);
com.skin="SkinOverPlayStopSeekMuteVol.swf";
com.skinBackgroundAlpha = .2;
com.skinBackgroundColor=0x999999;
com.skinAutoHide=true;
poster=new cVidCropped();
addChild(poster);
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
nenu = new Benu();
addChild(nenu);
nenu.up.addEventListener(MouseEvent.MOUSE_DOWN, scrollUp);
nenu.up.addEventListener(MouseEvent.MOUSE_UP, stopUp);
nenu.down.addEventListener(MouseEvent.MOUSE_DOWN, scrollDown);
nenu.down.addEventListener(MouseEvent.MOUSE_UP, stopDown);
nenu.addEventListener(MouseEvent.ROLL_OUT, fadeOut);
nenu.addEventListener(MouseEvent.ROLL_OVER, fadeIn);
nenu.btn_list.reset.addEventListener(MouseEvent.CLICK, playReset);
stage.addEventListener(Event.RESIZE, fillBG);
fillBG();
makeMenu();
I can't change vol pause or anythingAre you sure there is nothing on top of this skin. I can see that set of buttons are above the layer where your movie runs.
So do you have anything on top of the area of skin, then buttons of skin will not catch mouse over and click actions.
Looks like something on top of the area of skin.
what does that fillBG() method do? -
Buffered Input stream that increases internal buffer dynamically
I need to parse an input stream until I find a <META> tag with character encoding. I then need to reset to the beginning of the input stream and start parsing the stream again with the correct character encoding.
BufferedInputStream provides mark() and reset() methods which can be used to accomplish this task. However, the input stream data can be 1MB size and the only way I can think of forcing the BufferedInputStream to hold that content size is by specifying the size during construction.
I don't want to initialize the content size during construction of the BufferedStream for every data file I parse because some documents could have the tag in the beginning of the file and it could be waste of memory.
Question: Is there already a class which allows to set the maximum buffer size and which grows gradually to that size rather than during construction.
Thanks for any help.DrClap, I connect to a webserver and request a file. I just use the InputStream returned by the HttpResponse object to read the file. So, the answer to your question is I can't close and reopen the file.
Jawahar -
FLVPlayback component pauses when enters in buffering mode
Hi,
why yes there is, pay for a media server so that the video
doesn't need to download. however, if you set it to stream, it must
be downloaded to memory to play, so when it is 'pausing', it is
actually out of content to play until more of the file downloads.
so there is no way to keep it playing, if you are progressively
streaming the video.
Maybe you are looking for
-
Birthday calendar and list view
Hey, I'm loving my iPhone and have been very lucky in avoiding issues others have had. I do have a slight problem, though. I enabled birthdays in iCal and allowed them to sync over to iPhone. The only problem is that these birthdays from last year ar
-
When i log in i can't access my verizon info such as bill or usage info
When I try and log in under my Verizon it wont let me go any further. It has a continue button but it just stays there. I can't access my usage or my bil.
-
How to send query string by using form action
Hai to all, I am new to this topic Ihave one doubt about jsp form action.... That is I am using input type is submit button <input type="submit" name="submit" value="Edit" onclick="indows.location.href=+sample.jsp?query=+editvalue+editname"> If I get
-
Cannot open Catalyst (FXP) files when the project reaches a certain size!
Hi, I am a UI designer working for Playstation and have recently downloaded the trial of Flash Catalyst in order to test the validity of using it for game UI prototyping. This has worked well for me up until a week ago when I attempted to open the pr
-
Exception with regards to SharePoint Workflow Services
Hi there, Since today we suddenly get the following exception on our development farm: Method 'get_IsClientValid' in type 'Microsoft.SharePoint.WorkflowServices.WorkflowServiceApplicationProxy' from assembly 'Microsoft.SharePoint.WorkflowServices, Ve