(English version below.)
###
Πληροφορίες & Άδεια
Αυτό το εγχειρίδιο δημιουργήθηκε από τον πάροχο streaming dos.gr και διατίθεται ελεύθερα υπό την άδεια
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
. Μπορείτε να το αντιγράψετε, να το τροποποιήσετε και να το αναδημοσιεύσετε, με την προϋπόθεση ότι θα αναφέρετε την αρχική πηγή (
dos.gr
) και θα διατηρείτε την ίδια άδεια.
###
→ Ποιοι είμαστε
Το dos.gr είναι ο πρώτος πάροχος παγκοσμίως που υλοποίησε δημόσια εκπομπή βίντεο σε 1080p WebM/VP9 μέσω Icecast server, όπως αποδεικνύεται από τις καταγραφές στο Internet Archive:
Ιούνιος 2017:
Κατάλογος Icecast WebM
Ιούνιος 2017:
Ζωντανή εκπομπή dos.gr
Η ομάδα μας δραστηριοποιείται από το 1996, με εξειδίκευση σε:
Live streaming: RTMP, HLS, Icecast, WebRTC, SRT
Μορφές αρχείων: MP4, M3U8, WebM, FLV
Εργαλεία: VDO Panel, Wowza, OBS, FFmpeg, Nginx, Red5
Υλοποίηση ABR, χρήση CDN, χαμηλή καθυστέρηση
Βελτιστοποίηση kernel/sysctl/firewall/caching
→ Υπηρεσίες
Παρέχουμε τεχνική υποστήριξη και εγκατάσταση για:
RTMP / HLS / Icecast streaming
VDO Panel, Wowza, OBS, FFmpeg
Προσαρμοσμένα panels και custom server εφαρμογές
Server optimization (BIOS, thermal, kernel-level)
Τεχνική υποστήριξη σε Ελλάδα και εξ αποστάσεως (SSH, AnyDesk)
Ιστότοπος:
dos.gr
Email:
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.
→ Ευχαριστούμε για το ενδιαφέρον σας
Σας ευχαριστούμε που διαβάζετε αυτό το εγχειρίδιο. Ελπίζουμε να σας φανεί χρήσιμο στην προσπάθειά σας να μεταδώσετε περιεχόμενο με τρόπο ανοικτό, οικονομικό και αποδοτικό → Θα χαιρόμασταν ιδιαίτερα αν επισκεφθείτε τον ιστότοπό μας και εξερευνήσετε τις υπηρεσίες μας.
→ Ποιος μπορεί να το χρησιμοποιήσει & γιατί
Απευθύνεται σε:
Ραδιοφωνικούς σταθμούς που θέλουν να δείξουν studio cams - Web TVs, μικρούς broadcasters - Online διδασκαλίες, webinars - Κάμερες παρακολούθησης / science cams - Όποιον έχει μια ιδέα χωρίς budget
→ Γιατί WebM + Icecast;
Χωρίς άδειες/royalties (σε αντίθεση με Wowza, Flussonic, κ.λπ.)
Υποστήριξη από όλους τους σύγχρονους browsers
Ελάχιστες απαιτήσεις σε πόρους
Εξαιρετική ποιότητα εικόνας με χαμηλό bitrate
100% HTML5 – χωρίς Flash ή plugin
→ Περίληψη εγχειριδίου
Αυτό το manual αφορά προγραμματισμένη εκπομπή αποθηκευμένων αρχείων βίντεο (όχι live) μέσω Icecast v2. Σε επόμενο εγχειρίδιο θα περιγράψουμε και τη ζωντανή μετάδοση (live streaming).
→ Προαπαιτούμενα
Θα χρειαστείτε:
Icecast v2.4.4 (Centova Cast σε Linux)
FFmpeg (7.1.1 σε Linux για μετατροπή)
FFmpeg static (6.1.1 σε Windows για εκπομπή)
Ο Icecast μπορεί να είναι τοπικός, σε VPS, ή σε πάροχο, με ή χωρίς panel (π.χ. Centova Cast).
Η εκπομπή στη δική μας περίπτωση γίνεται από Windows για πρακτικούς λόγους.
→ Πλεονεκτήματα & Μειονεκτήματα
Μετατροπή γίνεται 1 φορά, εξαιρετική ποιότητα με μικρό μέγεθος
0% CPU κατά την εκπομπή – δεν υπάρχει real-time transcoding
Σταθερότητα, ιδανικό για low-resource συστήματα
Χρόνος μετατροπής υψηλός (π.χ. 20 ώρες για 1 ώρα video με i9-9900K)
VP9 δεν χρησιμοποιεί πλήρως τα threads
Υπάρχουν ρυθμίσεις που επιταχύνουν (-row-mt, -tile-columns, -cpu-used)
Αλλά η ποιότητα πέφτει ελαφρώς
→ Ρυθμίσεις server Icecast
Για να μπορέσει να γίνει η εκπομπή WebM/VP9 μέσω Icecast v2, απαιτείται η κατάλληλη παραμετροποίηση του αρχείου icecast.xml
Παρακάτω παρέχουμε έτοιμο αρχείο ρυθμίσεων που χρησιμοποιείται στην παραγωγική υλοποίηση του webm.win, σε Icecast v2 server (Centova Cast):
Λήψη αρχείου
icewebm.txt
<
Το αρχείο περιέχει πλήρη ρύθμιση για:
SSL streaming (HTTPS)
video/webm mountpoint (/dos.webm)
Directory listings για Xiph και άλλους καταλόγους
Κατάλληλες ρυθμίσεις burst-size, queue, timeouts, logging κ.ά.
Μπορείτε να προσαρμόσετε το αρχείο ανάλογα με τις δικές σας ανάγκες.
Η συγκεκριμένη υλοποίηση είναι πλήρως λειτουργική και δοκιμασμένη σε πραγματικές συνθήκες παραγωγής.
→ Ρυθμίσεις Icecast από το Centova Cast panel
Παρακάτω φαίνεται η διαμόρφωση βασικών παραμέτρων μέσω του Centova Cast panel, όπως:
Queue size: 12800000
Burst size: 2560000
Timeout τιμές για Source/Client
Οι συγκεκριμένες τιμές αντιστοιχούν ακριβώς στο icecast.xml που χρησιμοποιείται στην παραγωγική υλοποίηση στο webm.win
Ρυθμίσεις 'Limits'
Η παρακάτω εικόνα δείχνει βασικές παραμέτρους περιορισμών, όπως:
Μέγιστο Bitrate (9000 Kbps) (έχει τεθεί υψηλά για να μην κάνει αυτόματο stop το Centova σε αυτό το stream — και λιγότερο να το βάλετε δεν έχει σημασία, αρκεί να μην είναι μικρότερο από το bitrate του βίντεο που θα εκπέμψετε)
Μέγιστος αριθμός ακροατών
Disk quota & mount point limit
Ρυθμίσεις 'Mount Point'
Ρυθμίσεις για το mount point /dos.webm στο Icecast, όπως:
MIME type: video/webm
Advertised bitrate: 2000 kbps
Stream name & περιγραφή
Stream URL:
rdst.win:59000/dos.webm
→ Μετατροπή αρχείων σε WebM/VP9
Για τη μετατροπή των αρχείων μας σε WebM/VP9, επιλέξαμε τη μέθοδο διπλού περάσματος (2-pass encoding) με ffmpeg, καθώς μετά από δοκιμές διαπιστώσαμε ότι με αυτόν τον τρόπο πετυχαίναμε τη μέγιστη δυνατή ποιότητα εικόνας σε σχέση με το μέγεθος αρχείου.
Τα αρχικά αρχεία βίντεο ήταν σε ανάλυση 4K, και μετατράπηκαν σε 1920×1080 με σταθερό framerate 30fps.
Όλα τα βίντεο μετατράπηκαν με την ίδια ακριβώς εντολή, ώστε να διασφαλιστεί πλήρης ομοιομορφία κατά την εκπομπή και την παρακολούθηση από διαφορετικούς browsers και συσκευές. Επιλέξαμε επίσης bitrate ήχου στα 192 kbps, καθώς προσφέρει εξαιρετική ποιότητα χωρίς υπερβολικό μέγεθος.
→ Παράδειγμα εντολής μετατροπής (2-pass VP9 WebM)
ffmpeg -y -i carlcox.mp4 -vf "scale=1920:1080,fps=30" -c:v libvpx-vp9 -b:v 2000k -g 15 -deadline good -cpu-used 0 -threads 16 -pass 1 -an -f webm -passlogfile ./ffmpeg2pass temp_pass1_output.webm
ffmpeg -y -i carlcox.mp4 -vf "scale=1920:1080,fps=30" -c:v libvpx-vp9 -b:v 2000k -g 15 -deadline good -cpu-used 0 -threads 16 -pass 2 -c:a libvorbis -b:a 192k -ar 44100 output_1080p_best_quality_2000k.webm
→ Επεξήγηση βασικών παραμέτρων
Παράμετρος / Περιγραφή
-i carlcox.mp4 Το αρχικό αρχείο εισόδου (σε αυτή την περίπτωση ένα MP4)
-vf "scale=1920:1080,fps=30" Ορισμός ανάλυσης εξόδου και ρυθμός καρέ
-c:v libvpx-vp9 Video codec VP9
-b:v 2000k Bitrate video 2000 kbps
-g 15 Απόσταση μεταξύ keyframes (GOP) — ιδανικό για σταθερό seeking
-deadline good Ισορροπία μεταξύ ποιότητας και ταχύτητας
-cpu-used 0 Μέγιστη ποιότητα (πιο αργή κωδικοποίηση)
-threads 16 Αξιοποίηση 16 CPU threads
-pass 1 / -pass 2 Πρώτο και δεύτερο πέρασμα για βελτιστοποιημένη ποιότητα
-an Απενεργοποίηση ήχου στο πρώτο πέρασμα (δεν χρειάζεται)
-c:a libvorbis Χρήση Vorbis codec για τον ήχο
-b:a 192k Bitrate ήχου 192 kbps
-ar 44100 Συχνότητα ήχου 44.1kHz
-f webm Format εξόδου WebM
-passlogfile Αρχείο όπου αποθηκεύεται η πληροφορία του 1ου pass
→ Δημιουργία Playlist και Προγραμματισμένη Εκπομπή
Η εκπομπή των βίντεο WebM γίνεται στη δική μας υλοποίηση μέσω Windows, χρησιμοποιώντας ένα απλό αρχείο λίστας (input.txt) και την παρακάτω εντολή ffmpeg:
-re -f concat -safe 0 -i C:/Users/lyk/Desktop/ffmpegyag/videos/1080p/30fps/input.txt -c copy -f webm -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm icecast://source:
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.:9000/dos.webm
Το αρχείο input.txt περιέχει τις διαδρομές όλων των .webm αρχείων που θα μεταδοθούν διαδοχικά. Παράδειγμα:
Για μεγαλύτερη ευκολία και αξιοπιστία, η εκπομπή εκτελείται ως Windows service μέσω του FireDaemon, ώστε να μπορεί να ξεκινά αυτόματα, να επανεκκινείται σε περίπτωση αποτυχίας, και να λειτουργεί στο παρασκήνιο:
Με αυτόν τον τρόπο, η CPU κατά την εκπομπή παραμένει στο 0%, καθώς δεν πραγματοποιείται καμία επανακωδικοποίηση — το περιεχόμενο είναι ήδη πλήρως έτοιμο για μετάδοση.
Η ίδια διαδικασία μπορεί να υλοποιηθεί εξίσου εύκολα και σε Linux, με τη χρήση cron ή systemd service script.
Σχόλιο:
Θα ήταν ιδιαίτερα χρήσιμο εάν οι προγραμματιστές του Centova Cast πρόσθεταν ενσωματωμένη δυνατότητα υποστήριξης για .webm playlists ή αναπαραγωγή αρχείων μέσω ffmpeg concat. Κάτι τέτοιο θα επέτρεπε την αυτόματη εκπομπή προγραμματισμένου περιεχομένου WebM/VP9 απευθείας από το panel, όπως άλλωστε ήδη συμβαίνει με τα MP3.
→ Τελικές σημειώσεις
Αυτό το εγχειρίδιο καλύπτει βήμα-βήμα όλη τη διαδικασία:
από τη μετατροπή αρχείων και τις ρυθμίσεις του Icecast, μέχρι την προγραμματισμένη εκπομπή σε παραγωγικό περιβάλλον.
Από εδώ και πέρα... ψάξτε και λίγο μόνοι σας!
Το διαδίκτυο είναι γεμάτο παραδείγματα, τεχνικά άρθρα και φυσικά... DeepSeek/ChatGPT, που μπορεί να σας βοηθήσει να πειραματιστείτε παραπάνω — ειδικά σε custom καταστάσεις, αυτοματισμούς ή ενσωματώσεις σε HTML.
Αν θέλετε επαγγελματική υποστήριξη, εμείς είμαστε εδώ:
dos.gr |
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.
###
→ The English version begins here:
###
Information & License
This manual was created by the streaming provider dos.gr and is freely available under the
Creative Commons Attribution-ShareAlike 4.0 International license (CC BY-SA 4.0)
. You can copy, modify, and republish it, provided that you cite the original source (dos.gr) and maintain the same license.
###
→ Who we are
dos.gr is the first provider worldwide to publicly broadcast 1080p WebM/VP9 video via Icecast server, as evidenced by records in the Internet Archive:
June 2017:
Icecast WebM Directory
June 2017:
dos.gr live broadcast
Our team has been active since 1996, specializing in:
Live streaming: RTMP, HLS, Icecast, WebRTC, SRT
File formats: MP4, M3U8, WebM, FLV
Tools: VDO Panel, Wowza, OBS, FFmpeg, Nginx, Red5
ABR implementation, CDN usage, low latency
Kernel/sysctl/firewall/caching optimization
→ Services
We provide technical support and installation for:
RTMP / HLS / Icecast streaming
VDO Panel, Wowza, OBS, FFmpeg
Custom panels and custom server applications
Server optimization (BIOS, thermal, kernel-level)
Technical support in Greece and remotely (SSH, AnyDesk)
Website: dos.gr
Email:
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.
→ Thank you for your interest
Thank you for reading this manual. We hope you find it useful in your effort to broadcast content openly, economically, and efficiently. → We would be particularly pleased if you visited our website and explored our services.
→ Who can use it & why
Intended for:
Radio stations wanting to show studio cams - Web TVs, small broadcasters - Online lessons, webinars - Surveillance cameras / science cams - Anyone with an idea without budget
→ Why WebM + Icecast?
No licenses/royalties (unlike Wowza, Flussonic, etc.)
Supported by all modern browsers
Minimal resource requirements
Excellent image quality with low bitrate
100% HTML5 – no Flash or plugins
→ Manual summary
This manual covers scheduled broadcasting of stored video files (not live) via Icecast v2. In a future manual, we will describe live streaming.
→ Requirements
You will need:
Icecast v2.4.4 (Centova Cast on Linux)
FFmpeg (7.1.1 on Linux for conversion)
FFmpeg static (6.1.1 on Windows for broadcasting)
Icecast can be local, on VPS, or at a provider, with or without a panel (e.g., Centova Cast).
Our broadcasting is done from Windows for practical reasons.
→ Advantages & Disadvantages
Conversion is done once, excellent quality with small file size
0% CPU usage during broadcast – no real-time transcoding
Stability, ideal for low-resource systems
High conversion time (e.g., 20 hours for 1-hour video with i9-9900K)
VP9 does not fully utilize threads
There are settings to speed up encoding (-row-mt, -tile-columns, -cpu-used)
But quality slightly decreases
→ Icecast server settings
To broadcast WebM/VP9 via Icecast v2, proper configuration of icecast.xml is required.
Below we provide a ready-made configuration file used in the production implementation of webm.win on Icecast v2 server (Centova Cast):
Download
icewebm.txt
file <
This file includes complete settings for:
SSL streaming (HTTPS)
video/webm mountpoint (/dos.webm)
Directory listings for Xiph and other directories
Proper settings for burst-size, queue, timeouts, logging, etc.
You can adapt the file according to your needs.
This implementation is fully functional and tested in real production conditions.
→ Icecast settings via Centova Cast panel
Below shows configuration of basic parameters via Centova Cast panel, such as:
Queue size: 12800000
Burst size: 2560000
Timeout values for Source/Client
These values exactly match the icecast.xml used in the production implementation on webm.win
Limits settings
The image below shows basic restriction parameters, such as:
Maximum Bitrate (9000 Kbps) (set high to prevent Centova from auto-stopping this stream—setting lower doesn't matter, as long as it's not lower than your video bitrate)
Maximum listener number
Disk quota & mount point limit
Mount Point settings
Settings for mount point /dos.webm on Icecast, such as:
MIME type: video/webm
Advertised bitrate: 2000 kbps
Stream name & description
Stream URL:
rdst.win:59000/dos.webm
→ Converting files to WebM/VP9
For converting files to WebM/VP9, we chose the 2-pass encoding method with ffmpeg, as tests showed it achieves the best image quality relative to file size.
Original videos were 4K, converted to 1920×1080 at constant 30fps.
All videos used the exact same command for uniformity during broadcast and playback across browsers and devices. Audio bitrate was set to 192 kbps for excellent quality without excessive size.
→ Example conversion command (2-pass VP9 WebM)
ffmpeg -y -i carlcox.mp4 -vf "scale=1920:1080,fps=30" -c:v libvpx-vp9 -b:v 2000k -g 15 -deadline good -cpu-used 0 -threads 16 -pass 1 -an -f webm -passlogfile ./ffmpeg2pass temp_pass1_output.webm
ffmpeg -y -i carlcox.mp4 -vf "scale=1920:1080,fps=30" -c:v libvpx-vp9 -b:v 2000k -g 15 -deadline good -cpu-used 0 -threads 16 -pass 2 -c:a libvorbis -b:a 192k -ar 44100 output_1080p_best_quality_2000k.webm
→ Explanation of key parameters
Parameter / Description
-i carlcox.mp4 Original input file (MP4)
-vf "scale=1920:1080,fps=30" Output resolution and frame rate
-c:v libvpx-vp9 Video codec VP9
-b:v 2000k Video bitrate 2000 kbps
-g 15 Keyframe distance (GOP)—ideal for stable seeking
-deadline good Balance between quality and speed
-cpu-used 0 Maximum quality (slower encoding)
-threads 16 Using 16 CPU threads
-pass 1 / -pass 2 First and second pass for optimized quality
-an Disable audio in the first pass (not needed)
-c:a libvorbis Vorbis codec for audio
-b:a 192k Audio bitrate 192 kbps
-ar 44100 Audio frequency 44.1kHz
-f webm Output format WebM
-passlogfile File storing 1st pass information
→ Playlist creation & scheduled broadcast
Broadcasting is done via Windows, using a simple input.txt playlist and ffmpeg command:
-re -f concat -safe 0 -i C:/Users/lyk/Desktop/ffmpegyag/videos/1080p/30fps/input.txt -c copy -f webm -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm icecast://source:
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.:9000/dos.webm
The file input.txt contains the paths of all .webm files to be played sequentially. Example:
For greater convenience and reliability, the broadcast is run as a Windows service via FireDaemon, enabling it to start automatically, restart in case of failure, and operate in the background:
In this way, CPU usage during broadcasting remains at 0%, since no re-encoding takes place — the content is already fully prepared for streaming.
The same process can be just as easily implemented on Linux, using a cron job or a systemd service script.
Comment:
It would be especially helpful if the developers of Centova Cast added built-in support for .webm playlists or playback of files via ffmpeg concat. This would allow for automatic broadcasting of scheduled WebM/VP9 content directly from the panel — just like it already works with MP3.
→ Final Notes
This manual provides a step-by-step guide for the entire process:
from file conversion and Icecast configuration to scheduled broadcasting in a production environment.
From this point on... explore a little on your own!
The internet is full of examples, technical articles, and of course... DeepSeek/ChatGPT, which can help you experiment further — especially with custom setups, automation, or HTML integration.
If you need professional support, we’re here:
dos.gr |
Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.
---
→ Archived at 26.May.2025: Internet
Archive
(Wayback Machine) -
Zenodo
(DOI) - Licensed under
CC BY-SA
4.0