Voraussetzung für die Installation auf Ubuntu vorher installierte Programme:
a) VLC-Media-Player
b) OBS Open Broadcast Software
c) Zip-Entpacker
d) hier genutztes Linux-Betriebssystem Ubuntu 18.03.
Diese Anleitung ist Schritt für Schritt auszuführen. Für die Installation sind folgende Voraussetzungen erforderlich.
– Grundkenntnisse von dem Betriebssystem Ubuntu
– Umgang mit einem einfachen Text-Editor (HTML)
Tipp: Die hier angegebenen Befehlszeilen können einfach mit [Strg]+[x] kopiert werden und mit
[Strg]+[Shift] +[v ] in das Konsolen-Fenster eingefügt werden.
Vor der Installation, solltest du dein System auf den aktuellen Stand bringen.
- Mit der Tastenkombination [Strg] + [Alt] + [T] öffnest du die Konsole und gibst dazu folgende Befehlszeile ein. Gib dein Passwort ein und drücken [Enter]. Drücke [J] um das Update durchzuführen.
$ sudo apt-get update && sudo apt-get dist-upgrade
2. Die folgenden notwendigen Tools sind als nächstes so zu installieren:
$ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
3. Den Webserver enginx (gesprochen „engine-X“) herunterladen. Er ist derzeit einer der leistungsfähigen Webserver.
$ wget http://nginx.org/download/nginx-1.18.0.tar.gz
4. Quellen für das RTMP-Modul herunterladen
$ wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip
5. Entpacken und in das Server-Verzeichnis wechseln
$ tar -zxvf nginx-1.18.0.tar.gz $ unzip dev.zip $ cd /nginx-1.18.0
6. Erstellen und Installieren des nginx-Server mit dem eingebundenem RTMP-Modul.
$ ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-dev
$ make
$ sudo make install
7. Notwendige Verzeichnisstruktur anlegen für die Fragmente des Video-Streams.
$ sudo mkdir /HLS $ sudo mkdir /HLS/live $ sudo mkdir /HLS/mobile $ sudo mkdir /video_recordings $ sudo chmod -R 777 /video_recordings
Wird ubuntu mit Firewall betrieben (Standard ist aus), dann muss folgende Regel eingefügt werden.
$ sudo ufw allow 80 $ sudo ufw allow 1935 sudo $ ufw enable
8. Der Server ist installiert im Standardverzeichnis: /usr/local/nginx und wird nun gestartet. Den Browser öffnen und http://<deine ip-adresse>/ oder „localhost“ eingeben. Es erscheint die Startseite des Servers. (Die IP-Adresse des Servers wird über das Komando $ ifconfig ausgegeben.)
Server starten mit:
$ sudo /usr/local/nginx/sbin/nginx
Server stoppen mit:
$ sudo /usr/local/nginx/sbin/nginx -s stop
9. Installieren von FFmpeg zum Konvertieren und Packen des Streams.
$sudo apt-get install software-properties-common
$sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
10. Paketliste aktualisieren und installieren
$sudo apt-get update
$sudo apt-get install ffmpeg
11. Der Server konfigurieren vorher die original Konfigurationsdatei „nginx.conf „sichern.
$ sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
$ sudo nano /usr/local/nginx/conf/nginx.conf
12. Den gesamten Inhalt in die vorhandene Datei „nginx.conf“ kopieren (überschreiben) und speichern. Die Platzhalter „meine-ip sind mit der IP-Adresse deines Server zu ersetzten. Beispiel: 192.168.254.178
Für „mein-stream-key“, dein frei erfundener key z.B. tuy31nevyqz9 einsetzen.
worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; allow play all; #creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments application live { allow play all; live on; record all; record_path /video_recordings; record_unique on; hls on; hls_nested on; hls_path /HLS/live; hls_fragment 10s; #creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video exec ffmpeg -i rtmp://meine-ip:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://meine-ip:1935/mobile/$; } #creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments application mobile { allow play all; live on; hls on; hls_nested on; hls_path /HLS/mobile; hls_fragment 10s; } #allows you to play your recordings of your live streams using a URL like "rtmp://meine-ip:1935/vod/filename.flv" application vod { play /video_recordings; } } } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name meine-ip; #creates the http-location for our full-resolution (desktop) HLS stream - "http://meine-ip/live/mein-stream-key/index.m3u8" location /live { types { application/vnd.apple.mpegurl m3u8; } alias /HLS/live; add_header Cache-Control no-cache; } #creates the http-location for our mobile-device HLS stream - "http://meine-ip/mobile/mein-stream-key/index.m3u8" location /mobile { types { application/vnd.apple.mpegurl m3u8; } alias /HLS/mobile; add_header Cache-Control no-cache; } #allows us to see how stats on viewers on our Nginx site using a URL like: "http://meine-ip/stats" location /stats { stub_status; } #allows us to host some webpages which can show our videos: "http://meine-ip/my-page.html" location / { root html; index index.html index.htm; } } }
13. Das Program OBS (Open Broadcast Studio) starten und die Standard-Einstellungen belassen, bis auf den Eintrag „URL“ und „Stream Key“
Encoder-x264
Variable bitrate (not CBR or Constant Bit Rate), Quality highest
Max bitrate-600kbps
Audio-Codec-AAC
Audio-Format-44.1khz
Audio-bitrate-64kbps
URL "rtmp://deine-ip:1935/live"
Stream Key-"mein-stream-key"
Resolution-640x480
FPS (frames per second)-30
CFR (Constant Frame Rate) - Yes
Keyframe interval-2 seconds (one keyframe every 2 seconds)
x264 Encoding Profile-baseline (may work with main—depends on player used)
x264 CPU Present-veryfast
a) In OBS eine Videoquelle auswählen, z.B. Webcam
b) die Schaltfläche „Streaming starten“ betätigen
Ergebnis: Die Beschriftung der Schaltfläche wechselt in „Streaming stoppen“ und es wird in der unteren Statuszeile die Übertragsrate angezeigt.
14. Nun folgt ein Test mit dem VLC-Media-Player. Den Menüpunkt des VLC, „Medien/Netzwerkstream öffnen“ und die folgende Adresse eingeben:
http://meine-ip/live/mein-stream-key/index.m3u8
Wenn alles geklappt hat, zeigt der VLC-Player deinen Stream. Gratulation!
15. Stream in einer Website mit dem Media-Player „Video.js“ einbinden.
a) Den video.js-Player herunter laden und im Verzeichnis /usr/local/nginx/html entpacken.
b) Folgende HTML-Seite mit dem Namen z.B. „meine-index.html“ in dem o.g. Verzeichnis erstellen.
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Willkommen zu meiner Streaming-Seite!</title>
<link href="/video-js.css" rel="stylesheet">
<script src="/video.js"></script>
<script src="/videojs-contrib-hls.js"></script>
<script> var player = videojs('example-video');
player.play();
</script>
</head>
<body>
<video poster="/logo.png" id="example-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268" data-setup='{}'>
<source src="http://meine-ip/live/mein-streamkey/test.m3u8" type="application/x-mpegURL">
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that
<a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
</body>
</html>