diff options
author | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2019-02-24 21:05:27 +0100 |
---|---|---|
committer | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2019-02-24 21:05:27 +0100 |
commit | 8081a5520a441b43a8a7a73f3a90c7aacfaa8e10 (patch) | |
tree | c7f49bd33ed19d53afc0ee9df8b2c82c200c5910 /kpov_judge/tasks/vlc_stream_rtp | |
parent | 9963b74f777edf985540eac71b1ca095f88b8bca (diff) |
Move everything one level up
Diffstat (limited to 'kpov_judge/tasks/vlc_stream_rtp')
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/en/index.html | 94 | ||||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/1.png | bin | 8681 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/playlist.PNG | bin | 48064 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_finish.PNG | bin | 57437 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_menu.png | bin | 80030 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_open.PNG | bin | 62759 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_output.PNG | bin | 53770 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_transcoding.PNG | bin | 88906 -> 0 bytes | |||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/howtos/si/index.html | 93 | ||||
-rw-r--r-- | kpov_judge/tasks/vlc_stream_rtp/task.py | 110 |
10 files changed, 0 insertions, 297 deletions
diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/en/index.html b/kpov_judge/tasks/vlc_stream_rtp/howtos/en/index.html deleted file mode 100644 index c9e2714..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/en/index.html +++ /dev/null @@ -1,94 +0,0 @@ -<html> - -<head> -<meta http-equiv=Content-Type content="text/html; charset=utf-8"> -</head> - - -<body><font face="Georgia, Times New Roman, Times, serif"> - -<h2> Summary </h1> - -<ol> - <li>Set up a virtual machine</li> - <li>Install VLC</li> - <li>Create RTP video stream</li> - <li>Make sure the stream is accessible from the internet</li> -</ol> - - <h2>Instructions</h1> - - <ol> - <li> - <h4>Set up a virtual machine </h3> - <p> Use disk simpleArbiter. You can get it <a href="http://polz.si/media/uploads/kpov/virtualke/">here</a>. </p> - </li> - - <li> - <h4>Install VLC</h3> - <p> - In file <code>/etc/apt/sources.list</code> replace <code>wheezy</code> with - <code>testing</code> or if missing, add rows: - </p> - <p> - <code> - deb http://ftp.at.debian.org/debian wheezy main contrib non-free <br> - deb-src http://ftp.at.debian.org/debian wheezy main contrib non-free - </code> - </p> - <img alt="slika-01" src="../images/1.png" style="width: 640px;" /> - <p> - Check for updates and install VLC with the following commands: - </p> - <p> - <code> - apt-get update <br> - apt-get install vlc - </code> - </p> - </li> - - <li> - <h4>Create a new stream </h3> - - <p> - Open VLC. In Media menu select Stream. - </p> - <img src="../images/stream_menu.png" style="width: 640px;" alt="menu"> - <p> - Here we choose stream source. This can be a file, a network stream or a capture device. <br> - For this excercise, add one or more video file by clicking <i>Add ...</i> Continue with a click on button Stream. - </p> - <img src="../images/playlist.PNG" style="width: 640px;" alt="stream source"> - <p> - We must also choose the stream destination. For this excercise, choose RTP/MPEG Transport Stream and click Add. - You can configure multiple destinations simultaneously. - </p> - <p> - Configure destination settings. Enter address and stream name. - </p> - <img src="../images/stream_output.PNG" style="width: 640px;" alt="stream destination"> - <p> - Next, we can set transcoding, encapsulation, audio and video codecs and also subtitles. When you finish, click Save and Next. - </p> - <img src="../images/stream_transcoding.PNG" style="width: 640px;" alt="stream settings"> - <p> - In the last step, it is important to check option Stream all elementary streams. - In the text area, we can see the string that can be used to run the stream from a command line. - This is useful if you want to run stream from a computer without graphic interface. - </p> - <img src="../images/stream_finish.PNG" style="width: 640px;"> - </li> - - <li> - <h4>Open stream </h3> - <p> - We can now play the stream from another device using VLC. - </p> - <img src="../images/stream_open.PNG" style="width: 640px;" alt="play stream"> - </li> -</ol> - -</body> - -</html>
\ No newline at end of file diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/1.png b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/1.png Binary files differdeleted file mode 100644 index 903be70..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/1.png +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/playlist.PNG b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/playlist.PNG Binary files differdeleted file mode 100644 index b815098..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/playlist.PNG +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_finish.PNG b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_finish.PNG Binary files differdeleted file mode 100644 index f429a9b..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_finish.PNG +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_menu.png b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_menu.png Binary files differdeleted file mode 100644 index 01f52c6..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_menu.png +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_open.PNG b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_open.PNG Binary files differdeleted file mode 100644 index 772ffe8..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_open.PNG +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_output.PNG b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_output.PNG Binary files differdeleted file mode 100644 index c3dc2a7..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_output.PNG +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_transcoding.PNG b/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_transcoding.PNG Binary files differdeleted file mode 100644 index 1fbc9f3..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/images/stream_transcoding.PNG +++ /dev/null diff --git a/kpov_judge/tasks/vlc_stream_rtp/howtos/si/index.html b/kpov_judge/tasks/vlc_stream_rtp/howtos/si/index.html deleted file mode 100644 index c94044b..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/howtos/si/index.html +++ /dev/null @@ -1,93 +0,0 @@ -<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=utf-8">
-</head>
-
-
-<body><font face="Georgia, Times New Roman, Times, serif">
-
-<h2> Naloga na hitro </h1>
-
-<ol>
- <li>Postavi navidezni računalnik</li>
- <li>Naloži VLC</li>
- <li>Ustvari RTP video tok</li>
- <li>Poskrbi, da bo tok dostopen na internetu</li>
-</ol>
-
- <h2>Navodila</h1>
-
- <ol>
- <li>
- <h4>Postavi navidezni računalnik </h3>
- <p> Uporabi disk simpleArbiter. Dobiš ga lahko <a href="http://polz.si/media/uploads/kpov/virtualke/">tu</a>. </p>
- </li>
-
- <li>
- <h4>Naloži VLC </h3>
- <p>
- V <code>/etc/apt/sources.list</code> v spodnjih vrsticah zamenjaj <code>wheezy</code> z
- <code>testing</code> oziroma dodaj vrstice če niso napisane:
- </p>
- <p>
- <code>
- deb http://ftp.at.debian.org/debian wheezy main contrib non-free <br>
- deb-src http://ftp.at.debian.org/debian wheezy main contrib non-free
- </code>
- </p>
- <img alt="slika-01" src="../images/1.png" style="width: 640px;" />
- <p>
- Poglej za posodobitve in nato naloži VLC z naslednjimi ukazi:
- </p>
- <p>
- <code>
- apt-get update <br>
- apt-get install vlc
- </code>
- </p>
- </li>
-
- <li>
- <h4>Ustvari nov tok </h3>
-
- <p>
- Odpri VLC. V meniju Media izberi Stream.
- </p>
- <img src="../images/stream_menu.png" style="width: 640px;" alt="Meni">
- <p>
- V oknu "Open Media" izberemo vir toka. Ta je lahko datoteka, že obstoječ omrežni tok ali pa snemalne naprave. <br>
- Za namen te naloge lahko z klikom na gumb <i>Add ...</i> dodamo eno ali več video datotek. Nadaljujemo z klikom na Stream.
- </p>
- <img src="../images/playlist.PNG" style="width: 640px;" alt="Vir toka">
- <p>
- Določiti moramo tudi destinacijo toka. Za to nalogo izberemo RTP/MPEG Transport Stream in kliknemo Add.
- Možno je nastaviti več destinacij hkrati.
- </p>
- <p>
- Nato izpolnimo nastavitve destinacije z naslovom in imenom toka.
- </p>
- <img src="../images/stream_output.PNG" style="width: 640px;" alt="Destinacija toka">
- <p>
- V naslednjem koraku lahko nastavimo kodiranje, enkapsulacijo, avdio in video nastavitve ter podnapise.
- </p>
- <img src="../images/stream_transcoding.PNG" style="width: 640px;" alt="Nastavitve Toka">
- <p>
- V zadnjem koraku je pomembno obkljukati možnost Stream all elementary streams.
- V spodnjem tekstovnem polju dobimo niz, ki ga lahko uporabimo za zagon toka iz ukazne vrstice.
- </p>
- <img src="../images/stream_finish.PNG" style="width: 640px;">
- </li>
-
- <li>
- <h4>Odpri tok </h3>
- <p>
- Na drugem računalniku lahko ustvarjen video tok predvajamo z VLC.
- </p>
- <img src="../images/stream_open.PNG" style="width: 640px;" alt="Predvajanje toka">
- </li>
-</ol>
-
-</body>
-
-</html>
\ No newline at end of file diff --git a/kpov_judge/tasks/vlc_stream_rtp/task.py b/kpov_judge/tasks/vlc_stream_rtp/task.py deleted file mode 100644 index 427fc0e..0000000 --- a/kpov_judge/tasks/vlc_stream_rtp/task.py +++ /dev/null @@ -1,110 +0,0 @@ -# kpov_util should be imported by add_assignment.py - -# Postavi nek film na Internet tako, da ga bodo lahko ostali videli. -# TODO: finish this - -instructions = { - 'si': '''\ -<p> -Postavi navidezni računalnik <em>SimpleArbiter</em> in <em>StudentVLC</em>. Poskrbi, da bosta na istem omrežju, od koder bosta imela dostop tudi do interneta. - -<p> -Na <em>StudentVLC</em> posodobi datoteko <code>/etc/apt/sources.list</code>, preveri posodobitve in naloži VLC. - -<p> -Posnemi ali kako drugače ustvari film ter poskrbi, da bo film dostopen na lokalnem omrežju prek RTP z imenom toka <code>{{TOK}}</code> na naslovu <code>{{NASLOV}}</code>, vrata <code>{{PORT}}</code>. Računaj, da bodo film lahko videli tvoji sošolci. Kršenje avtorskih pravic je pri reševanju te naloge strogo prepovedano. -''', - 'en': '''\ -<p> -Set up a virtual computer called <em>SimpleArbiter</em> using the simpleArbiter disk and -a virtual computer called <em>StudentVLC</em> using the student-VLC disk. Make sure they -are on the same network and that they have access to the Internet. - -<p> -On StundentVLC, update /etc/apt/sources.list, check the for updates and install VLC. - -<p> -Record or otherwise create a movie and make sure the movie is avaliable on your local network via RTP with the name of the stream <code>{{TOK}}</code> at the address <code>{{NASLOV}}</code> on port <code>{{PORT}}</code>. Take into account that the movie may be seen by your classmates. Copyright infrigement while solving this task is strictly prohibited. -''', -} - -computers = { - 'SimpleArbiter': { - 'disks': [ - { 'name': 'simpleArbiter', - }, - ], - 'network_interfaces': [{'network': 'test-net'}], - 'flavor': 'm1.tiny', - 'config_drive': False - }, - 'StudentVLC': { - 'disks': [ - { 'name': 'student-VLC', - }, - ], - 'network_interfaces': [{'network': 'test-net'}], - 'flavor': 'm1.tiny', - 'config_drive': False - } - -} - -networks = { 'test-net': {'public': True} } - -params_meta = { - 'NASLOV': {'descriptions': {'si': 'RTP multicast IP naslov'}, 'w': False, 'public':True, 'type': 'stream_name', 'generated': True}, - 'PORT': {'descriptions': {'si': 'RTP VRATA'}, 'w': False, 'public':True, 'type': 'port', 'generated': True}, - 'TOK': {'descriptions': {'si': 'Naslov (ime) toka'}, 'w': False, 'public':True, 'type': 'IP', 'generated': True}, -} - -def task(NASLOV, TOK): - import pexpect - results = dict() - results['ps'] = pexpect.run('ps xa') - results['tcpdump_hex'] = pexpect.run('sudo /usr/sbin/tcpdump -x -c 2 dst host 239.255.255.255 and port 9875'.format(NASLOV)) - results['tcpdump'] = pexpect.run('sudo /usr/sbin/tcpdump -c 8 dst host {}'.format(NASLOV)) - return results - -def gen_params(user_id, params_meta): - params = dict() - r = random.Random(user_id) - net = kpov_util.IPv4_net_gen(r, min_hosts = 16, - local=True, multicast=True) - params['NASLOV'] = kpov_util.IPv4_addr_gen(r, net, 1)[0] - params['PORT'] = str(r.randint(5000, 6000)) - params['TOK'] = kpov_util.hostname_gen(r) - return params - -def task_check(results, params): - import re - score = 0 - hints = [] - p1_s = "" - sname = "" - try: - packs = results['tcpdump_hex'].split('> 239.255.255.255.9875: UDP, length') - p1 = packs[1] - p1_l = p1.split('\n') - p1_d = p1_l[1:-1] - p1_s = "" - for i in p1_d: - p1_s = p1_s + "".join([j.strip() for j in i.split(' ')[1:]]) - sname = "".join([hex(ord(i))[2:] for i in params['TOK']]) - except: - hints.append("problem parsing RTP stream capture result") - if p1_s.find(sname) > 2: - score += 5 - else: - hints.append("stream name not found in stream announcement") - s = "IP [^ ]* > {}.{}: UDP, length [0-9]+".format( - re.escape(params['NASLOV']), - params['PORT']) - if re.search(s, results['tcpdump']): - score += 5 - else: - hints.append("RTP stream not detected in " + results['tcpdump']) - return score, hints - -def prepare_disks(templates, task_params, global_params): - write_default_config(templates['simpleArbiter'], global_params) |