10 06 2008

So, these are the things what are have to be done :
- fine tune bandwidth / throughput detection and frame dropping
- create a buffer pool for live streams, because now they are just multiplexed as they arrive, and broadcasting delay grows continously
- vp6/h264 rtmp implementation
- rtmpe decypher. it seems like a standard RC4 strream cypher, but i'm sure they changed something
- rtmpt maybe

thats all folks!

05 06 2008

Hey! The long-lasting development of 0.8 beta is finally over!!! yaaaaay! you can't imagine how happy i am with this, because i really got depressed of the non-progress, and lack of time, one month without any result triggers death-wish in me.

But finally its over. I've upgraded the reference, the unit tester is working, but i won't do any performance tuning until h264 and vp6 streaming isn't implemented, especially with adobe live fms. Live streaming is really becoming one of the most important thing on the net, and FP9 and 10 built in sorenson encoder is useless. the only solution avaliable is adobe live encoder, so i will tune milenia for the use of that.

application scopes are already implemented in this version.

I'll bugfix the recorder part of the unit tester and the stress tester, and i will put up the 0.8 beta application package in the downloads.

08 04 2008

Good news everyone!!!

Finally, i’m more-or-less ready with the new release of Milenia. It’s quite raw right now, but in the next few days i will stabilize it. But till then, you can already browse or checkout the source from google code ( thanks Anjo for the tip, google code really rocks )


I’ve also created a google group for developer discussion


If you want to follow Milenia related infos, please join the group, i won’t disturb you in this direct way again.

I don’t know if the forum will be needed, but i will keep it for a while.

Short feature list:

Live Audio/Video streaming
Live Audio/Video recording
Recorded FLV playback
FLV playback speed set - slow/fast, forward/reverse
Stream access control based on stream events
Simple and fast custom application deployment
Lightweight data communication
Client mode - you can connect Milenia to any kind of flash media server
Server to server Data/Audio/Video communication - stream pushing , clustering
Fast as light, solid as rock!
Admin console
Stress tester
Unit tester
Built-in bandwidth check

I will come up with a downloadable stable version around the weekend, i will notify everyone on groups.

The license is still GPL V2, and i won’t change it. I want the world to be free and open.



03 April 2008

Hi everybody! Long time no see? I know :) Well, that happnens when you have to earn money for living, and there is no time for hobby :( But bewaaare, Milenia 0.8 is on its way, with lots of very tasty things :D

27 January 2008

7c 52 74 6d 70 53 61 6d 70 6c 65 41 63 63 65 73 73 01 01 01 01 , what means “|RtmpSampleAccess( true , true )”, and Mileania now enables bitmapdrata draws, and computespectrums on rtmp streams. yeah!!! By the way, if you are planning FMS license purchase, forget Streaming Server licenses, it disables custom application creation! You have to buy the interactive edition for the old extreme prizes... It's so annoying... FMS3 is again a fantastic product from adobe, which was created by the marketing division, not by programmers. "Twice streaming capacity"... Of course, on a twice bigger processor... Oh, and about the new swf hash check security feature - why adobe thinks that i cannot simply send the desired hash/size code with a custom rtmp protocol? :D But RTMPE seems interesting, i couldn't see any secure handshake, it seems that the player send a key right at the start in the rtmp handshake.

21 January 2008

First, i would like to apologize, i haven't really had time for Milenia in the past month. I've become the chief software architect at make.tv, and i was under a heavy load in the past four weeks. The good thing about this that we will use Milenia, and i can test it under extreme load, so hopefully it will become the world's fastest rock stable rtmp server. I'll try to finalize the .7 beta this weekend, but i can't promise anything.

2 January 2008

Hi everybody, it's been a long time... Milenia Grafter Server 0.7 is on its way, i have to finalize a few things, rewrite demo applications, and it's ready. It features bugfixed flv recording, and flv playing, the stream handling is now fms-like, you can play non-existing streams now, and wait for a publisher, you can also create persistent streams for web-tv projects. API is changed, a Stream class were born, and it's 6Kbytes smaller than the previous version. Keep waiting!!!

25 October 2007

And the first public version is ready!!!! YEEEEEAAAAHHH!!!

10 October 2007

Serialized sucking was the keyword for the last three days, i have to totally rewrite rtmp serialization to take chunk splitting/merging to a higher level to ensure network traffic's better scattering. and after this another two things occused the same bug which caused rewriting. but now, it is flawless. i'm finishing stress tester, then milenia grafter chat demo. yupeeee.

interesting fact: it seems like that flash player instances use a common stream comressos/decompressor pool, because decompression error in one player caeses stream death in every other players.

03 October 2007

Let's see what have i done in the last 2 months.


A very fast masspoint dynamics engine lack of geometrical shapes, in java/AS3

an RTMP serializer and deserializer

an AMF serializer and deserializer

a stream manager

a thread manager optimized for a flash media server

a media server framework

spectacular AS3 effects, exploding, cube-turn, displaced transitions

table, slider, textfield components

a simple mulit-user video chat

a full-featured admin for milenia grafter sever full of effects


I'm in deep love with myself :D

02 October 2007

Flash's gradientFill is a totally useless crap. It showed three different results without code modification, and it only knows linear gradient. So I've written an ExponentialRadialGradientFill class instead. By the way, admin client applicatioin is almost ready. Only server-side admin, and stress test is left. Then comes documentation and testing. Yeah.

28 September 2007

Madness!!! Somehow i deleted all my server source playing with jar manifest!!! Aaaaargh!!! Fortunately i made a backup three days ago, and i was working mainly on the client in the past days, so i could rewrite missing parts from head between 1 AM and 3 AM :( I also made a party in the evening in my flat, so i'm a little bit tired.

26 September 2007

Very nice progress in the last two days, I started creating the first demo application: Milenia Grafter chat. Yesterday i made the design, and written a simple Table component for nick name listing, and a slider component for nick/chat sliding. Today i renewed my cube-screen-switching effect, it is real 3D now. I also created an "exploding window" effect for the login window, they are really spectacular.

Tomorrow i will finish the chat, maybe the server side logic also, and only the admin application is left, and testing can begin. Wow.

19 September 2007


I switched to non-blocking sockets, and it is annoying. Blocking sockets would be great, because i can check data availability with inputstream.available( ), so i can avoid thread blocking. The only thing it can't do is checking end of stream without blocking the thread, and that's a shame. :( So i swithed to SocketChannels.


This was one of the hardest day in my programmer career... :D from 11 AM to 22 PM i was trying to figure out why the publisher client stops publishing after 90 seconds... it just stopped, no data in or out, but it wasn't disconnected... i've tried everything, i rewrote thread handling twice, wrote many test clients, debug traces everywhere, and nothing... i'm a typical capriconr, i felt like dying... but i never give up :D so, i've realized that it must be something with flash player 9, because red5 also dies in the first second, and i've used red5 for rtmp message testing, so i had to get an Adobe FMS somehow... after a short search i've found a page with live streaming, and after five minutes of reverse engineering the communication between the client and the server i managed to connect and publish my stream :D so i started tcp dumping, and after 10 megabytes of raw data i stopped. I started to filter the data every possible way to find something unusual, and after a little sucking, i realized thatunlike red5 fms sends a clientBW, serverBW, and a long ping in one packet at the beginning. ( so i wouldn't have to dump 10 megabytes :D ). and victory, it works like an angel :D

tomorrow i implement stream access control with stream event listeners, and server-to-server streaming. I did the active handshake part in the morning.

18 September 2007

Live streaming is bugfixed!!! RTMP's live streaming is a really stupid and annoying thing. First the client sends a createStream invoke, you have to pass back a result, containing a streamID generated by the server. Okay. Then the client sends a publishStream/playStream invoke with the stream name, and without any of the previous id's. But you have to pair somehow the stream name, and the server generated id, because deleteStream passes only the server generated stream id. So the only connection point is that publishStream/playStream comes after createStream synchronously, but it is not ensured by the protocol. If only the whole communication would come on the same rtmp address, everything would be okay.

17 september 2007

I've chased a deadlock for three hours, then i realized that inputstream.read( ) blocks the thread... lame :D

16 September 2007

Stream recording is ready. It tricked me a little, i tought that i have to increase audio data's timestamp independently from video, but after two hours of trying it appeared that another bug caused trouble.

12 September 2007

At 4:44 PM live streaming worked for the first time! I'm very optimistic about the performance, i published a 320x240 stream with 25 fps, 30 Kbytes/sec, and with ten subscribers the cpu usage of the server is still under 1 percent.

02 September 2007

RTMP Serializer/Deserializer is ready. I started working on the server one week ago, after a few test applications, and heavy understanding of the rtmp protocol, but i'm still very pleased about the progress.