Today's tasks: - download a video clip - make a clip available on the web - stream a clip over http - stream a clip over RTP

First, let's look at how we can get a movie off the net. Start wireshark. Enable filtering so that you only follow HTTP traffic.

Download any movie off the net (for example this one.

Use wget to download the movie:

wget URL

Then open any video on

. If the playback doesn't start, install a few packages with non-free licences:

apt-get install ubuntu-restricted-extras

Try to find out which URL the video file is being streamed from. Can you save it using wget?

To download video from popular websites, you can install an addon for Firefox - Video download helper.

To play back the film, you are going to need a video player. For the rest of the exercise, we will be using vlc:

apt-get install vlc

To play back video, you can then use the command:

vlc ime_videa.flv

Now that you have the video, you can get it to your friends. First, you will have to transcode the video. Convert it into an mpeg transport stream. To transcode the video, you can use some examplesi, or just click everything away in the GUI. Here is another example:

vlc -vvv INPUT.flv --sout '#transcode{vcodec=h264,acodec=mpga,scale=1,vb=500,ab=128}:standard{access=file,mux=ts,dst=OUTPUT.mpg4}'

Once converted, you can stream the movie over HTTP:

vlc -vvv film.mpg4 --sout '#standard{access=http,mux=ts,dst=MY_IP:8080}'

Your peers can then access it:

vlc http://THE_IP_OF_THY_NEIGHBOR:8080

You can combine the transcoding and HTTP streaming into one command. You can also stream live video instead of a pre-recorded movie. Help yourselves with an example - change it so that you stream an .ogg stream.

Using HTTP to transfer video can put a great load on the network. To relieve the network, TV over IP providers use multicast.

Which part of the IPv4 address space is used for multicast? Which addresses can be used to perform multicast on a local network?

Set up a multicast video stream. The setup is simple, but you might have to transcode the movie first.

If you want to receive a multicast video stream, look here.

When using multicast, one of the problems is the fact that we might not know, which streams are available. To advertise the availability of streams, you can use the SAP protocol which is also used on MBONE.

Set up a multicast video stream and announce it over SAP. You can look at some examples.

This examples reduces the size of the video by a half and then transmits it to the multicast group 239.255.12.16, while announcing it over SAP as "THEBESTMOVIEEVER"

vlc -vvv MYFILM.mp4 --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=300,ab=128,scale=0.5,deinterlace}:rtp{mux=ts,dst=239.255.12.16,sdp=sap,name="THEBESTMOVIEEVER"}' --loop

Namen vaje: naučiti se prenašati zvok in sliko preko interneta.

Najprej si poglejmo, kako video z interneta spravimo na disk.

Zaženite Wireshark. Vklopite filtriranje tako, da boste prestrezali le HTTP promet.

Odprite poljuben .mpg ali podoben video nekje na internetu (na primer tegale).

Film povlecite z interneta z uporabo ukaza wget:

wget URL

Nato odprite poljuben video na

. Če flash ne deluje, namestite dodatke za Ubuntu z manj prijaznimi licencami:

apt-get install ubuntu-restricted-extras

Ugotovite, s katerega URL je prišla video datoteka. Video na youtube ima praviloma končnico .flv. Ali ga lahko shranite z uporabo wget?

Za downloadanje videa s popularnih strani lahko uporabite tudi dodatek za Firefox - Video download helper.

Da bi film lahko predvajali, boste verjetno potrebovali kak video predvajalnik. Za nadaljnje delo bomo uporabili vlc:

apt-get install vlc

Iz konzole lahko video potem predvajate takole:

vlc ime_videa.flv

Sedaj, ko lahko video dobite na računalnik, je čas, da ga spravite do svojih prijateljev. Da bi video deloval, ga morate pretvoriti v primeren format. Pretvorite ga v .mp4. Za predvajanje s pretakanjem mora biti film zakodiran kot transport stream (ts). Pomagate si lahko s primeri, ali pa stvar odklikate v uporabniškem vmesniku. Tule je še en primerček:

vlc -vvv VHODNA.flv --sout '#transcode{vcodec=h264,acodec=mpga,scale=1,vb=500,ab=128}:standard{access=file,mux=ts,dst=IZHODNA.mpg4}'

Če med transkodiranjem vidite kaj podobnega:"rc buffer underflow", izberite drug vhodni film, ali pa zmanjšajte parameter scale npr. na 0.5.

Ko je pretvorjen, video naredimo dostopen prek HTTP:

vlc -vvv film.mpg4 --sout '#standard{access=http,mux=ts,dst=MOJ_IP:8080}'

Sošolci do filma pridejo takole:

vlc http://IP_SOŠOLCA_S_FILMOM:8080

Pretvorbo formata in izvoz prek HTTP lahko izvedete z enim samim ukazom. Prav tako lahko namesto datoteke izvozite živo sliko, naravnost s kamere. Pomagajte si s primerom in ga predelajte tako, da bo namesto formata .asf uporabljen format ogg.

Seveda s tovrstnim prometom mrežo hitro zasedemo. Da se zagotovi manjša zasedenost omrežja, ponudniki IP telefonije za dostavljanje videa uporabljajo razpošiljanje (Multicast). TV kanale vam dostavijo tako, da vsak kanal naredijo dostopen na svojem naslovu za razpošiljanje. Z učilnice potegnite primer predvajalnega seznama (playlist) s kanali, ki jih nudi SIOL. Na kakšnih naslovih so kanali?

Kateri del IP naslovnega prostora je namenjen razpošiljanju? Kateri del IP naslovnega prostora je namenjen razpošiljanju po lokalni mreži?

Postavite razpošiljalni video tok. Sama vzpostavitev je preprosta, morda pa bo potrebno film tudi pretvoriti v enega od formatov, ki omogočajo živo predvajanje.

Kako predvajamo video, ki se prenaša s pomočjo razpošiljanja, si oglejte tukaj.

Pri predvajanju z razpošiljanjem je ena izmed težav v tem, da vnaprej ne vemo, katere skupine (video tokovi) so na omrežju na voljo. Za najavo teh skupin lahko uporabimo protokol SAP. SAP uporabljajo tudi na omrežju MBONE.

Postavite še video tok z razpošiljanjem ter ga najavite preko SAP. Pomagajte si s primerčki.

Tule je naveden primer, ki pretvori film v format mp4, ga dvakrat pomanjša in razpošlje po skupini 239.255.12.16, pri čemer ga najavi s pomočjo sap kot "NAJBOLJSIFILMNASVETU":

vlc -vvv MOJFILM.mp4 --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=300,ab=128,scale=0.5,deinterlace}:rtp{mux=ts,dst=239.255.12.16,sdp=sap,name="NAJBOLJSIFILMNASVETU"}' --loop
Last modified: Tuesday, 13 December 2011, 8:45 AM