В тази тема ще приложа как да си направим собствен аудио/видео стрийм сървър на база на леко модифицирана версия на Wowza Media Server, която въпреки, че е стара версия и леко модифициране се моа, спомага да се използва по предназначение за стрийм на видео VoD и Live във всички възможни формати за излъчване.
Ще бъдат приложени и файловете за изтегляне, след нагласянето на пакета от мен, така че да бъде с минимални усилия от Ваша страна за да си пуснете собствен стрийм сървър.
Версията е за Windows, но успешно е изтествана и на Debian и CentOS с аналогични конфигурационни настройки, а бе имате глави на раменете си все пак щом сте се захванали да го правите, нали?!
Защо да използваме "модифицирана" версия?
Защото е пълноценен заместник на платената версия и няма никакви ограничения в броя връзки и проверка за лицензни сървъри
Защо, все пак?!
Защото преди бях DEV QA TESTER, а сега не съм и факта, че политиката към разработчиците се промени БЕЗ те да получат нещо, както междувпрочем на изключително много софтуер, в който по една или друга причина съм участвал или участвам и смятам, че трябва да е БЕЗПЛАТЕН във пълният му блясък!
Статията е абсолютно авторска и е приложима както за малки компании, тестери и разработчици така и към обикновените потребители, които с минимални усилия да се научат как стават нещата и да оценят кое и как се прави и колко струва
Идеята следва логиката, че все пак разполагате с някакъв енкодер, който излъчва и имате собствен стрийм сървър, който излъчва нашият канал/предаване или каквото Ви душа иска.
(вж. глава Програмни изисквания, възможности и инсталация)
Hardware Specification / Хардуерна Спецификация
Хардуерни изисквания към машина способна да приема/излъчва HD канал (720p) на до 2000 едновременни конекции.
За да излъчвате (стриймвате) трябва да знаете, че е от изключителна важност да имате широк канал на UPLOAD без ограничения в броя конекции и лимитиране на сесии и филтриране по TCP/UDP или ограничаване на връзката по какъвто и да е било начин за да нямаме накъсвания и глюк на картината особено при Live излъчване.
За да поддържате стрийм сървър е почти задължително да използвате "желязо" със съответната разходна норма
Какво имам предивд, като минимум:
- RAM / Оперативна памет: 8 GB DDR3 RAM (JAVA сама по себе си е гладна за памет, ОС също изисква санитарен минимум, а и сървъра ни ще консумира определено количество)
- CPU / Процесор: Intel Quad CPU (заради мулттимедийните инструкции заложени в архитектурата, a ако имате възможност за XEON и Dual Socket машина, ще сте "Царете на канала"
- System OS HDD/SDD / Системен диск за ОС: SSD твърд диск за ОС (да тук ни трябва бързодействие, но и с по скромни ресурси пак се ядва)
- Storage Hard Disks / Твърди дискове със съдържание: Сървърен HDD за съхранение на VoD съдържание, което ще излъчваме по заявка с минимални изисквания (7200 RPM, 64MB cash), ако можете да си позволите хардуерна RAID платка със съответните дискове или масиви със съдържание или недай си боже да има възможността да си прикачите и NAS устройството за да си имате навсякъде подръка Вашата видеотека да речем
- NIC/Network Interface Card/Мрежова карта - мда колкото и да е неприятно, но да разчитате на вграденият в дъното Marvell Yukon или Realtek е някак си злобарско смешно, виж ако си добавите на някой от свободните слотове една хардуерна Intel/3-COM мрежова карта, отново ще се издигнете в ефира
- UPS - мисля, че няма да си говорим за качеството на тока в България, а и не бихте желали да спре излъчването, точно на най интересният момент от филма и/или партито
Дотук с основните хардуерни изисквания и изисквания към мрежовата ни среда.
Започваме с есенцията и най вече, че обикновено доставчика Ви е дал едно или няколко реални IP-та, което/които сте настроили при Вас и се редистрибутира/-т към вътрешната Ви мрежа посредством хардуерно устройство наречено рутер (бах маму, сори)
Познатият сценарий обаче изисква малко да пипнете в настройките на рутера си за да можете да NAT-нете портовете, които ще са Ви нужни за стрийм към вътрешното IP на сървъра!
(вж. по-долу глава Мрежови настройки)
Software Requirements / Софтуерни изисквания
След това, понеже WOWZA Media Server е JAVA базирана, то ще трябва да си инсталираме JDK/JRE, тъй като тази модифицирана версия на WOWZA Media Server, за която пишем настоящата статия е за Microsoft Windows базирани системи и всичко е аналогично и за lInux повярвайте ми.
Желателно (почти задължително) е да използвате 64-bit/x64 ОС (операционна система)
(шестдесет и четири битово разредна операционна система е правилното, както обичаше да казва един асистент в БАН)
Сега е време да направим малко настройки в ОС и нейните променливи за да може всичко да ни тръгне от воле
(вж. глава Системни настройки)
(to be continued)
N.B. https://brendaneich.com/ - Това е само за да се покаже бъдещето, такова каквото ще бъде, а като сложим и че VALVE тестват обратна био-връзка с геймърите, то очаквайте до 7 години появата на първият самостоятелен кибернетичен организъм със собствено развитие и съзнание, който ще се обучава от нас самите .... and follow the white rabbit
In progress: Make Own Stream Server - Windows
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
Програмни изисквания, възможности и инсталация
Възможности:
Възможности за Live енкодиране (предаване на живо / On Air и други подобни фукни)
Поддържани 1n/0ut видео/аудио файлови формати:
Приложими протоколи и спецификации съгласно стандарт
Минимални препоръчителни системни (хардуерни) изисквания:
CPU: Single Quad Core, 3.00 GHz or better
RAM: 4GB
Disk: 2 or more in RAID 0 (striping)
Network: 1Gb Ethernet
Исикзвания към Високо производителна система (хардуерни)
CPU: Dual Quad-Core or a single Hex-Core, 3.00 GHz or better
RAM: 16-32GB
Disk: 2 or more in RAID 0 (striping)
Network: 10Gbps Ethernet
Изисквания за операционна система:
Windows® (XP, Vista, 7, Server 2003, 2008, 2012)
Linux (all distributions)
Solaris
Mac® OS
Unix
Java (required)Java Runtime Environment (JRE) 6 or greater or Java Development Kit (JDK) 6 or greater, OpenJDK
WOWZA Media Server 2.2.4 Develeoper Perpetual Edition
Платформи за разпространение
Microsoft Windows XP/7 OS
Инсталационен *.EXE файл
Стрийм сървър *.RAR пакет (разархивирай и пусни)
За да инсталирате на Linux OS използвайте следните бърз How-To
Red Hat Package Manager (RPM):
sudo chmod +x WowzaMediaServer-2.2.4.rpm.bin
sudo ./WowzaMediaServer-2.2.4.rpm.bin
Debian Package Manager(DEB):
sudo chmod +x WowzaMediaServer-2.2.4.deb.bin
sudo ./WowzaMediaServer-2.2.4.deb.bin
TAR Installer (TAR):
sudo chmod +x WowzaMediaServer-2.2.4.tar.bin
sudo ./WowzaMediaServer-2.2.4.tar.bin
Минимални препоръчителни системни (хардуерни) изисквания:
CPU: Single Quad Core, 3.00 GHz or better
RAM: 4GB
Disk: 2 or more in RAID 0 (striping)
Network: 1Gb Ethernet
Исикзвания към Високо производителна система (хардуерни)
CPU: Dual Quad-Core or a single Hex-Core, 3.00 GHz or better
RAM: 16-32GB
Disk: 2 or more in RAID 0 (striping)
Network: 10Gbps Ethernet
Изисквания за операционна система:
Windows® (XP, Vista, 7, Server 2003, 2008, 2012)
Linux (all distributions)
Solaris
Mac® OS
Unix
Java (required)Java Runtime Environment (JRE) 6 or greater or Java Development Kit (JDK) 6 or greater, OpenJDK
WOWZA Media Server 2.2.4 Develeoper Perpetual Edition
Платформи за разпространение
Microsoft Windows XP/7 OS
Инсталационен *.EXE файл
Стрийм сървър *.RAR пакет (разархивирай и пусни)
За да инсталирате на Linux OS използвайте следните бърз How-To
Red Hat Package Manager (RPM):
sudo chmod +x WowzaMediaServer-2.2.4.rpm.bin
sudo ./WowzaMediaServer-2.2.4.rpm.bin
Debian Package Manager(DEB):
sudo chmod +x WowzaMediaServer-2.2.4.deb.bin
sudo ./WowzaMediaServer-2.2.4.deb.bin
TAR Installer (TAR):
sudo chmod +x WowzaMediaServer-2.2.4.tar.bin
sudo ./WowzaMediaServer-2.2.4.tar.bin
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
Системни настройки
Във Environment Variables се добавят следните променливи
(My Computer > Properties > Advanced > Environment Variables)
System Variable / Системни променливи
User Variable / Потребителски променливи
Ако в някои от променливите имаме запис, то отделяме съществуващият запис с ";"
(вж. реда в червено)
HOSTS File Modify / Модифициране на HOSTS файл
(%SystemRoot%\system32\drivers\etc > hosts)
Добавете следните редове във Вашият HOSTS файл за да избегнем проверката за лиценз!
(My Computer > Properties > Advanced > Environment Variables)
System Variable / Системни променливи
(вж. реда в червено)
HOSTS File Modify / Модифициране на HOSTS файл
(%SystemRoot%\system32\drivers\etc > hosts)
Добавете следните редове във Вашият HOSTS файл за да избегнем проверката за лиценз!
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
Допълнителни настройки
Запазено - Допълнителни настройки
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
Мрежови настройки
Та за да работи нашият стрийм сървър ще трябва да пренасочите (NAT) следните портове на рутера си:
Същата операция трябва да извършите и на машината, която е сървър в мрежата, т.е. във Firewall, който ползвате да изолирате посочените портове.
Код за потвърждение: Избери целия код
TCP 1935: RTMP (all variants), RTSP, Microsoft Smooth Streaming, Apple HTTP Live Streaming (HLS), WOWZ™
UDP 6970-9999: RTP UDP Streaming
TCP 8084-8085: JMX/JConsole monitoring and administration
TCP 8086: HTTP administration
TCP 80: RTMPT, Microsoft Smooth Streaming, Apple HTTP Live Streaming (HLS), Adobe HTTP Dynamic Streaming (HDS)
TCP 443: RTMPS, HTTPS
TCP 554: RTSP
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
Тестова постановка
Използваме за целта безплатен Open-Source Open Broadcaster Software 0.622b 64-bit/x64
https://obsproject.com/
и допълнително разширяеми модули (PlugIns) за него:
DirectDraw capture - https://obsproject.com/forum/resources/ ... upport.27/
Video source & Browser source (deprecated) - http://catchexception.org/
Overlay Images - https://obsproject.com/forum/resources/ ... images.51/
OBS Remote - http://www.obsremote.com/
Simple scene switcher - https://obsproject.com/forum/resources/ ... itcher.29/
CLR Browser Source - https://obsproject.com/forum/resources/ ... plugin.22/
Повече информация относно начина на използване и конфигуриране - https://obsproject.com/forum/resources/ ... /guides.2/
https://obsproject.com/
и допълнително разширяеми модули (PlugIns) за него:
DirectDraw capture - https://obsproject.com/forum/resources/ ... upport.27/
Video source & Browser source (deprecated) - http://catchexception.org/
Overlay Images - https://obsproject.com/forum/resources/ ... images.51/
OBS Remote - http://www.obsremote.com/
Simple scene switcher - https://obsproject.com/forum/resources/ ... itcher.29/
CLR Browser Source - https://obsproject.com/forum/resources/ ... plugin.22/
Повече информация относно начина на използване и конфигуриране - https://obsproject.com/forum/resources/ ... /guides.2/
- Diabolik
- Старши котарак
- Мнения: 477
- Регистриран на: 24 Дек 2012 12:30
- error_404
- Глобален модератор
- Мнения: 360
- Регистриран на: 22 Дек 2012 10:58
In progress: Make Own Stream Server - DebiaNginx
В основата на проекта е Debian Linux OS, като операционна система + следните компонен, модули и пакети:
FFMPEG, mp4box, mkvmerge, flvmeta, flvtool2, rtmpdump, mediainfo, mencoder, PHP 7, nginx, nginx-rtmp, Let's Encrypt, OpenSSL,
Крайната цел е да създадем собствен универсален Media Stream Server с възможност за рестрийм към допълнителни услуги, конвертиране на видео и запис на поточно видео (входящ стрийм) или създаването на поток за гледане от различни устройства - таблети, десктоп системи или смартфони!
Управлението е изцяло през WebUI (браузер) и максимално минималистично и съвместимо със различни екрани и системи!
Нахвърлям командите, като приключа ще доопиша.
# Delegate SUPER privileges
sudo su
# Install dependencies
apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
y
# Version check
gcc --version
make --version
openssl version
# Install PHP-FPM/FastCGI
sudo apt-get install php5-fpm php5-cli php-pear php5-dev php5-common php5-gd
sudo /etc/init.d/php5-fpm start
#get the last stable version of nginx:
#Latest stable version: http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.9.2.tar.gz
#need to untar the downloaded tar ball
tar zxvf nginx-1.9.2.tar.gz
#get last version of PCRE - used for expression pattern in nginx conf file.
#official website: http://www.pcre.org/
wget ftp://ftp.csx.cam.ac.uk/pub/software/pr ... .37.tar.gz
tar zxvf pcre-8.37.tar.gz
#For compilation we also need Zlib library
wget http://zlib.net/zlib-1.2.8.tar.gz
tar zxvf zlib-1.2.8.tar.gz
#NGINX-based Media Streaming Server: nginx-rtmp-module, hosted on GitHUB
wget https://github.com/arut/nginx-rtmp-modu ... master.zip
unzip master.zip
#Getting the chat module: nginx-push-module, this is quite old - 2010
wget https://pushmodule.slact.net/downloads/ ... 692.tar.gz
tar zxvf nginx_http_push_module-0.692.tar.gz
tar zxvf nginx_http_push_module-0.73.tar
# Modify server version src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[] = "Server: DebiaNginx Media Streaming" CRLF;
static char ngx_http_server_full_string[] = "Server: DebiaNginx Media Streaming" CRLF;
# Prepare configuration with MP4, FLV, RTMP
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/run/nginx.pid \
--lock-path=/run/lock/subsys/nginx \
--user=nginx \
--group=nginx \
--with-zlib=/root/src/zlib-1.2.8 \
--with-pcre=/root/src/pcre-8.37 \
--add-module=/root/src/nginx_http_push_module-0.73 \
--add-module=/root/src/nginx-rtmp-module-master \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_ssl_module \
--with-http_image_filter_module \
--with-http_spdy_module \
--with-http_dav_module
# Make and compile
make
make install
N.B. Да поработя върху WebUI управлението и запис на стриймовете.
FFMPEG, mp4box, mkvmerge, flvmeta, flvtool2, rtmpdump, mediainfo, mencoder, PHP 7, nginx, nginx-rtmp, Let's Encrypt, OpenSSL,
Крайната цел е да създадем собствен универсален Media Stream Server с възможност за рестрийм към допълнителни услуги, конвертиране на видео и запис на поточно видео (входящ стрийм) или създаването на поток за гледане от различни устройства - таблети, десктоп системи или смартфони!
Управлението е изцяло през WebUI (браузер) и максимално минималистично и съвместимо със различни екрани и системи!
Нахвърлям командите, като приключа ще доопиша.
# Delegate SUPER privileges
sudo su
# Install dependencies
apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
y
# Version check
gcc --version
make --version
openssl version
# Install PHP-FPM/FastCGI
sudo apt-get install php5-fpm php5-cli php-pear php5-dev php5-common php5-gd
sudo /etc/init.d/php5-fpm start
#get the last stable version of nginx:
#Latest stable version: http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.9.2.tar.gz
#need to untar the downloaded tar ball
tar zxvf nginx-1.9.2.tar.gz
#get last version of PCRE - used for expression pattern in nginx conf file.
#official website: http://www.pcre.org/
wget ftp://ftp.csx.cam.ac.uk/pub/software/pr ... .37.tar.gz
tar zxvf pcre-8.37.tar.gz
#For compilation we also need Zlib library
wget http://zlib.net/zlib-1.2.8.tar.gz
tar zxvf zlib-1.2.8.tar.gz
#NGINX-based Media Streaming Server: nginx-rtmp-module, hosted on GitHUB
wget https://github.com/arut/nginx-rtmp-modu ... master.zip
unzip master.zip
#Getting the chat module: nginx-push-module, this is quite old - 2010
wget https://pushmodule.slact.net/downloads/ ... 692.tar.gz
tar zxvf nginx_http_push_module-0.692.tar.gz
tar zxvf nginx_http_push_module-0.73.tar
# Modify server version src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[] = "Server: DebiaNginx Media Streaming" CRLF;
static char ngx_http_server_full_string[] = "Server: DebiaNginx Media Streaming" CRLF;
# Prepare configuration with MP4, FLV, RTMP
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/run/nginx.pid \
--lock-path=/run/lock/subsys/nginx \
--user=nginx \
--group=nginx \
--with-zlib=/root/src/zlib-1.2.8 \
--with-pcre=/root/src/pcre-8.37 \
--add-module=/root/src/nginx_http_push_module-0.73 \
--add-module=/root/src/nginx-rtmp-module-master \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_ssl_module \
--with-http_image_filter_module \
--with-http_spdy_module \
--with-http_dav_module
# Make and compile
make
make install
N.B. Да поработя върху WebUI управлението и запис на стриймовете.