ActionScript 3.0 :: Play MP3 Sound From Buffer (ByteArray / Stream)?
Oct 25, 2009
I have a buffer with MP3 data (If I would save this buffer and call it buffer.mp3 it would play, but in this situation I should not save it to file system). I have to play it, but I can not, what shall I do? I tried the next code to play that buffrer(ByteArrayStream) (I get MP3 data from server the method of getting data works fine (tested on text int's etc) I call the returned ByteArray readResponse because I have some seading method and It is it's response).
I am working on a game, made with Flash (using AS3) The game has a fast ball and when this ball hits an object it has to make a sound... but the sound starts with delay (so the ball is far away when the sound is played).This sound is edited by me and it hasn't got any silences at the beginning.The method i'm currently using is the simplest one:
public var sonidoPuntos1:sonidopunto1 = new sonidopunto1()
and then...
sonidoPuntos1.play()
I am trying to introduce the file into a ByteArray and then playing it from there...
I'm having a sound object being loaded. And I want that for as long as it is buffering to have it written in a textfield "loading..." and when it starts playing to write in that textfield the name of the song. And i want this to happen everytime the buffer needs to load and everytime the song resumes play state.
I have a button which loads a sounclip into a movieclip: [AS]_root.myMusic = new Sound(emptyMC); _root.myMusic.loadSound("song1.mp3", true);[/AS] it will load the sound and play and stream it ... but in my output i constantly get this every sec: Error opening URL "file:///E|/Dir/Dir/Dir/undefined"
I just made it clear of the differences between the progressive video and streaming video *^_^* But I do need a feature of allowing buffering the video when it's paused, which I cannot find how to do it directly... I followed an article ( url...) to manage the buffer strategy but it didn't solve my problem. My problem is: if the user has a very slow network condition, he/she might want to just pause the video manually, and wait it to be downloaded until it's 'pretty much', and he/she can watch it without interrupting. But I notice that, when I pause the video, the event "NetStream.Buffer.Flush" is triggered. And according to the language reference: "Data has finished streaming, and the remaining buffer will be emptied.", I have to re-buffer it, right? However, also according to the reference, it shouldn't stop buffering:Starting with Flash Player 9.0.115.0, Flash Player no longer clears the buffer when NetStream.pause() is called. This behavior is called "smart pause". Before Flash Player 9.0.115.0, Flash Player waited for the buffer to fill up before resuming playback, which often caused a delay. I'm using Flash Professional to do the debugging, and the traced version number is: MAC 10,0,22,91; and for the streaming server, I use red5.
just made it clear of the differences between the progressive video and streaming video *^.^*
But I do need a feature of allowing buffering the video when it's paused, which I cannot find how to do it directly...
I followed an article (I'm not able to post the url) to manage the buffer strategy but it didn't solve my problem.
My problem is: if the user has a very slow network condition, he/she might want to just pause the video manually, and wait it to be downloaded until it's 'pretty much', and he/she can watch it without interrupting.
But I notice that, when I pause the video, the event "NetStream.Buffer.Flush" is triggered. And according to the language reference: "Data has finished streaming, and the remaining buffer will be emptied.", I have to re-buffer it, right?
I really expect the "buffer when paused" functionality, is it possible to do?
p.s. I'm using red5, not fms, although I haven't touched the difference part of them.
Live streaming and a buffer on a NetStream do not mix. Why? The docs don't say you can't do this.The playback gets hosed. Buffer is supposed to fill to what you set it to before playing. Instead though, about half the time, the player starts playing right away and disregards the buffer time you've set. Then you get caught in short buffering and rebuffering cycles that degrades the playback experience.
Give it a shot yourself. Here is the simplest of live streaming video players. No frills. Just connect it to your live stream by changing the defaultURL string and stream name in the ns.play() statement.
Run it in Flex debug mode. It will check and print the ns.bufferLength property every second. The buffer is set to 20 secs currently. Last time I ran it, I never made it above 2 seconds in the buffer. Player started playing right away instead of buffering the full 20 secs first. Sometimes you get to the full 20 and sometimes not.
I need a feature of allowing buffering the video when it's paused, which I cannot find how to do it directly... I notice that, when I pause the video, the event "NetStream.Buffer.Flush" is triggered. And according to the language reference: "Data has finished streaming, and the remaining buffer will be emptied.", I have to re-buffer it, right? However, also according to the reference, it shouldn't stop buffering:
I'm having some trouble getting the following code to work - trying to use the new Sound.extract() function to get two seconds of a Sound into a ByteArray, and then create a new bytearray with a WAV header, and then output the file. The resulting 'test.wav' file sounds very wrong although slightly recognisable? I think I may have some of the WAV header settings may be wrong but I'm not quite sure what's the matter and after a long time scratching
I am developing a C++ program to connect FMS via RTMP, and then publish a live stream I can't use FMLE here because I need collect the H.264 NALU from somewhere and forward them to the FMS.I write a demo app, which parses H.264 encoded FLV file, and send the VideoTag in the FLV as RTMP Message content for publishing.Finally, I make it run and I can see some frames of video!But the problem is: The video does not play smoothly and it just updates some frames. Then I looked at the NetStream event and found that:Everytime when there is a NetStream.Buffer.Full event, the frame in the video is updated and display correctly But immediately there is another NetStream.Buffer.Empty event followed and the video is frozen.
I'm sure this has been asked and answered a million times, but searching for "application" "buffer" "cache" "live" and "hls" isn't giving me any answers, so let's get to it. After I end a live stream (which I do using FMLE 3.2 and FMS 4.5) and I then start a new live stream with the same application name, the HLS stream just loops the last 30 seconds of the old stream. To prevent this, after I end a stream, I have to go to applicationslivepkgstreams\_definst_ and delete the buffered data there. Only then can I start a new stream with the same name as the old stream. Now... that can't be normal, can it? Is there a switch somewhere I can set to tell FMS to cut it out and stop buffering old streams?
None of these seem to make ByteArray.uncompress happy, i.e. I get
Error #2058: There was an error decompressing the data.
Also the whole Deflate vs zlib has me going around in circles. It seems that according to the wikipedia article, zlib is an implementation of DEFLATE. But according to Actionscript they are two different things?
Microsoft also seems to indicate the Gzip at least uses the Deflate algorithm, as in their docs they refer that GZipOutputStream uses the same compression algorithm as DeflateStream. So I'm assuming that it's just a header difference, which would indicate that's "no good" as far as 'ByteArray.uncompress' as the "DEFLATE" algorithm is only supported in AIR applications.
Sample "server" code, using SharpZipLib in this case (not working):
public virtual bool ProcessRequest(string path, HttpListenerContext context) { var buffer = File.ReadAllBytes(path); // Specifying to strip header/footer from data as that seems to be what the
I have a layout with narration and a nav bar. When I click a nav button for section 2, the audio from section 1 (set to stream) continues to play over the audio for section 2. This cumulates so if I click buttons for sections 3, 4 and 5, I get five audio files playing on top of each other. Sections are individual movie clips with embedded audio streaming on a Sounds layer in each movie clip.
like row sound we put buffer, like thisbuffer = new SoundLoaderContext(65000);_loop_snd = new Sound(new URLRequest(_mp3), buffer); how can i put buffer in dynamic sound..as per your code where i can put buffer in below code..
_dynamicSound = new Sound(); _dynamicSound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
the dynamicSound genrated from the row sound, means i modify the row sound.
I have recently installed FMIS 3.5.3. In checking the access logs I find data in both logs that display the same stream stop and stream play time .I'm not sure why the time is the same (00:19:27 example below). Videos play fine when testing from work (T3 connection). However, occasionally a very slight hesitation when playing video from home (I have cable connection). [code]...
I have an AS3 swf which users can upload jpg images to my EC2 instances which sit behind and Elastic Load Balancer. The jpg images are converted into bytearray data and sent using URLLoader.load(URLRequest)I make 2 calls when uploading, one to upload a large version, then another to upload a thumbnail version. A PHP script to which the bytearray data is uploaded converts this to a file using file_put_contents($destination,$GLOBALS["HTTP_RAW_POST_DATA"])Is it possible to combine these two requests into a single request which contains both the bytearray data for the large and thumbnail images and 'split' the HTTP_RAW_POST_DATA to create 2 files at the server. This would be better than uploading the bytearray for the large version then using something like ImageMagick to resize the resulting image into a thumbnail which I realise is another option.
I have a broadcasting project that I've got where the host of the show can have multiple sound effects they can use on their show.I'm wondering if the only way to go about this is for all the clients listening to the show need to download the mp3 of that sound effect or if the sound effect could come from the host ...like combining his mic (for his voice) but also straight audio (the sound effect) into the stream.
I have a sound-file (.wav, could be any format) saved in a ByteArray. How can I play it as a Sound? I've heard it should work with SoundChannels and stuff, but I don't know how...
When the playFoReal function (sorry for the name!) is called no sound plays. I know my as is bad but I only started learning recently and really need to get this program working! There don't seem to be many examples to look at as I guess this technique is rather new.
I'm trying to convert the byteArray of a Sound Object to an array with floats. The Sound Object plays back fine & at full length, but the float Array i get from it is cut off (but sounds correct), so i must be doing something wrong in the conversion:[code]The top two channels are the original Sound Object.The lower two is the float Array Data. I aligned them so you can see that the beginning is cut off and obviously the length is incorrect.
doing sound recording and playback in flash. I found this code from a tutorial and converted it to a flash document. From my traces, the record functions seem to be called. But when I try to play back the data, it tells me that the byteArray is empty. I've tested and I know that my microphone is working.
When I trace the size of the ByteArray, it returns 0;
So why does no data get recorded into the ByteArray?
output: Recording Stopped recording Start Playing Play Data - NO DATA
i try to get a bytearray from a webcam. i can get the image of the webcam, copy it to bitmapdata and get the bytearray. but is it possible to get the bytearray from the image and sound from the client's webcam?
I'm using the following to extract the sound data from a sound object and store this in a byte array.
I require that the entire mp3 be loaded into the bytearray before advancing and the below works fine for this purpose however flash temporarily hangs while it extracts this data (2.4mb mp3)
Is there a way i can stop it from hanging i.e. use an eventlistener to check the progress of the extract process?
I'm trying to build a play back progress bar for an audio recorded from the users microphone. It works okay but when I play back I can't figure out how long the audio is so I can calculate percent played for animating a progress bar. Most of these snippets can be found in LiveDocs and online examples from bytearray.org. Audio is stored in the bytearray and the sound is played back in a sound channel.