Thursday, February 19, 2009

Streaming Media

I was stumbling with old 'Digit Achieves' and I got article which caught my eyes as it was named as 'Streaming Media'. So let's elaborate more on this.

As the Internet speed is getting better and better nowadays watching videos , listening songs online from the sites like youtube, google video, mp3air etc have also increased by the internet user, without knowing how it really works? I guess end user for any technology never care how does that system work but NOT everyone. So let's dig what happens actually when we play multimedia in our browser.

Define Streaming :

Streaming media is streaming video with sound. With streaming video or streaming media, a Web user does not have to wait to download a large file before seeing the video or hearing the sound. Instead, the media is sent in a continuous stream and is played as it arrives. The user needs a player, which is a special program that compresses and sends video data to the display and audio data to speakers. A player can be either an integral part of a browser or downloaded from the software maker's Web site.

The technology and protocols used for streaming are different from used for viewing web pages or for downloading files. It is the technique of continuous and steady digital data (audio/video/graphics) transfer as packet in real time from a data server through the Internet to user's computer. Media files can be played in browser by using any embedded plugins or any media player. Smoothness of media stream is based on internet speed. Different quality may be available for different internet speed connection like glitches in frame or no sound for slow speed connection.

Compression method for media file is essential feature which decide the seamless streaming. Lossy compression formats for audio like mp3, aac, WMA etc. and video formats like mpeg2, mpeg4, h.264, vc-1 etc are used for encoding and converting those large media files to smaller size with compromised quality and so we get .mov , .rm etc. files.

RealNetworks, QuickTime, Windows media and Macromedia Flash are the most popular streaming technologies and many broadcasters (data server providers) assume that the player plugins are already installed in viewer/listener browser.

Streaming methods :

So streaming technology this encompasses media content, the streaming server, plugins and codec software. Streaming is of two types – progressive and real time (live). In progressive streaming, the media file can be viewed or listened while the file is being downloaded. In the case of packet loss, re-retransmission of lost packets are possible. Media files streamed in progressive manner get stored temporarily in viewer's hard drive e.g. HTTP streaming. In the case of HTTP streaming a request for data remains open even after the data is received by the client, so that server can respond at any time.

In real-time streaming, media contents get downloaded temporarily to the user's computer and gives live broadcast of media contents which is entirely depends upon the internet connection speed user has otherwise transmission of media would break.

Media streaming can also be categories as 'on demand ' or 'live'. In the case of on demand, the media files are stored in server for a long period of time and can be transmitted based on user request while live streams are only available at particular time like live TV broadcast. But nowadays due to increase performance and lower cost of the technologies mostly HYBRID (live and latter on demand ) systems are more popular. So now while watching live cricket match , you can pause it and restart from the same place through on demand method.

Transmission Protocols:

For streaming the there are a lots of transmission protocols are available like Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Real Time Streaming Protocol (RTSP) and Real Time Protocol (RTP). TCP provides guaranties for the transmission of every bit by giving reliable connection. However UDP is more preferable than TCP for providing continuous transmission of data rather than re-transmission of lost packets. Some glitches might observed while packet loss but that can be recovered or minimized by various error-correction techniques. RTSP and RTP are mostly used in internet for media transmission. These can be used for unicast (one to one communication) or multicast (one to many communication).

PS: For hands on streaming your own media files, just play with VLC player (my favorite one).

Here are some other useful links:

1)Streaming media
2)How Streaming Video and Audio Work
3)List of streaming media systems

Thursday, February 12, 2009

Bacics Of Linux

As per my last blog I had scheduled the first one week duration for "Basics Of Linux". And I am feeling good that I finished this even before the schedule. I read the book "Introduction to Unix" .The book was quite simple and good. It starts with 'History of Unix ' and then 'Unix structure' expalining in brief about kernel, file/directory structure. Afterwards while explaining about 'terminal' and sh/ksh/csh/bash etc , it slowly switched to unix/linux command.

Commands are pretty much categories like the first category is "Directory navigation and control" which explain the command like pwd, cd, ls etc including their options. next is "File maintenance" commands are cp, mv, chmod, chown etc and then "Display" like echo, cat, more, less, pg, head ,tail etc commands

Next category is 'System Resources & printing' commands are like df, du, ps, kill, who whereis, which, date etc. I didn't read 'printing' related commands, it felt redundant to me presently so I skipped that. After that 'Shells' start which continues with 'Test processing ' commands with regular expressions grep, sed, gawk and other useful commands cmp, diff, sort, wc, touch, file , tar etc. The book ends with Shell Programming for learning purpose. This explains shell scripts, parameters/variables, here documents and control commands if, do -while , switch, test etc.

Actually from last 4-5 months I am also using 'Ubuntu Hardy' in my laptop, so I was so called using linux but I was working in Windows manner by NOT at all using 'Terminal' except for enabling my bluetooth mouse by 'hidd --search' command.

Now for my advance course of Linux I am planning to read another unix book "Unix Systems Programming" which explains how to design and implement reliable UNIX software and through coverage of files, signals, semaphores, POSIX threads and client server communication. I dont know how far i can proceed... ;)

And as my next task is "Basics of DirectShow" so I will be back to my Vista. Let's see how things goes there...

Monday, February 09, 2009

Task Planned

In my previous blog "1st evening of Year 2009" I mentioned some tasks I planned to do this year, although after observing the number of tasks in the list some may say "it's insane to stretch these task to entire year"

I accept that but I also do believe that If you are going for long jump, you have to start with small steps. Lots of work are there in my real job and I am learning much there too, but I am gradually feeling that only counting the number of tasks I have to do is NOT sufficient. And I will be always busy in my job, actually they will keep me busy always that's what they give us compensation/salary.. :)

But I have to be quite serious, regular and more important sincere for success of my Knowledge Enhancement Program (KEP). And now I am feeling why deadline is very important in any work...(Generally I consider deadline is not a noun but is a Verb for employee "either the project will be died(Finished) by that time or employee...")

But I have to work in proper schedule time...kind of deadline. So I did some kind of time allotment for a few of my tasks. I will try to stick with this.

1) Basics of Linux -- One week
2) Basics of DirectShow -- One week
3) Advance Linux -- One week
4) YUV show project in DirectShow --Two week