In progress: Make Own Stream Server - Windows

Създаване, прекодиране на аудио и видео, оптимални настройки, софтуер, постигане на най-добро качество, ripping, streaming, нов хардуер и други
Публикувай отговор
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

In progress: Make Own Stream Server - Windows

Мнение от error_404 »

В тази тема ще приложа как да си направим собствен аудио/видео стрийм сървър на база на леко модифицирана версия на Wowza Media Server, която въпреки, че е стара версия и леко модифициране се моа, спомага да се използва по предназначение за стрийм на видео VoD и Live във всички възможни формати за излъчване.
Ще бъдат приложени и файловете за изтегляне, след нагласянето на пакета от мен, така че да бъде с минимални усилия от Ваша страна за да си пуснете собствен стрийм сървър.
Версията е за Windows, но успешно е изтествана и на Debian и CentOS с аналогични конфигурационни настройки, а бе имате глави на раменете си все пак щом сте се захванали да го правите, нали?!
Защо да използваме "модифицирана" версия?
Защото е пълноценен заместник на платената версия и няма никакви ограничения в броя връзки и проверка за лицензни сървъри :twisted:
Защо, все пак?!
Защото преди бях DEV QA TESTER, а сега не съм и факта, че политиката към разработчиците се промени БЕЗ те да получат нещо, както междувпрочем на изключително много софтуер, в който по една или друга причина съм участвал или участвам и смятам, че трябва да е БЕЗПЛАТЕН във пълният му блясък!
:shock:
Статията е абсолютно авторска и е приложима както за малки компании, тестери и разработчици така и към обикновените потребители, които с минимални усилия да се научат как стават нещата и да оценят кое и как се прави и колко струва :D

Идеята следва логиката, че все пак разполагате с някакъв енкодер, който излъчва и имате собствен стрийм сървър, който излъчва нашият канал/предаване или каквото Ви душа иска.
(вж. глава Програмни изисквания, възможности и инсталация)

Hardware Specification / Хардуерна Спецификация

Хардуерни изисквания към машина способна да приема/излъчва HD канал (720p) на до 2000 едновременни конекции.
За да излъчвате (стриймвате) трябва да знаете, че е от изключителна важност да имате широк канал на UPLOAD без ограничения в броя конекции и лимитиране на сесии и филтриране по TCP/UDP или ограничаване на връзката по какъвто и да е било начин за да нямаме накъсвания и глюк на картината особено при Live излъчване.
За да поддържате стрийм сървър е почти задължително да използвате "желязо" със съответната разходна норма :twisted:
Какво имам предивд, като минимум:
- 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 устройството за да си имате навсякъде подръка Вашата видеотека да речем :twisted:
- NIC/Network Interface Card/Мрежова карта - мда колкото и да е неприятно, но да разчитате на вграденият в дъното Marvell Yukon или Realtek е някак си злобарско смешно, виж ако си добавите на някой от свободните слотове една хардуерна Intel/3-COM мрежова карта, отново ще се издигнете в ефира
- UPS - мисля, че няма да си говорим за качеството на тока в България, а и не бихте желали да спре излъчването, точно на най интересният момент от филма и/или партито :twisted:

Дотук с основните хардуерни изисквания и изисквания към мрежовата ни среда.
:dancing:

Започваме с есенцията и най вече, че обикновено доставчика Ви е дал едно или няколко реални IP-та, което/които сте настроили при Вас и се редистрибутира/-т към вътрешната Ви мрежа посредством хардуерно устройство наречено рутер (бах маму, сори)
Познатият сценарий обаче изисква малко да пипнете в настройките на рутера си за да можете да NAT-нете портовете, които ще са Ви нужни за стрийм към вътрешното IP на сървъра! :wtf:
(вж. по-долу глава Мрежови настройки)

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 :twisted:


Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

Програмни изисквания, възможности и инсталация

Мнение от error_404 »

Възможности:
Multi-Protocol, Multi-Client Streaming (не знам как да го преведа на хуманоиден)

Adobe Flash® RTMP
(RTMPE, RTMPT, RTMPTE, RTMPS)
Adobe Flash HTTP Streaming (HDS)

Flash Player, Adobe® AIR® RTMP-compatible players. HDS-compatible players

Apple® HTTP Live Streaming (HLS)
iPhone®, iPod®, iPad® (iOS 3.0 or later)
QuickTime® Player (10.0 or later)
Safari® (4.0 or later on Mac OS X version 10.6)
Roku® streaming devices
Other HLS-compatible players

Microsoft® Smooth Streaming
Silverlight® 3 or later
Other Smooth Streaming-compatible players

RTSP/RTP
Quicktime Player
VideoLAN VLC media player
3GPP-compatible mobile devices
Other RTSP/RTP-compliant players

MPEG2 Transport Protocol (MPEG-TS)
IPTV set-top boxes
Възможности за Live енкодиране (предаване на живо / On Air и други подобни фукни)
RTMP
- Video: H.264, VP6, Sorenson Spark®, Screen Video v1 & v2
- Audio: AAC, AAC-LC, HE-AAC, MP3, Speex, Nellymoser Asao

RTSP/RTP
- Video: H.264, H.263
- Audio: AAC, AAC-LC, HE-AAC, MP3, Speex

MPEG-TS
- Video: H.264
- Audio: AAC, AAC-LC, HE-AAC, MP3

ICY (SHOUTcast/Icecast)
- Audio: AAC, AAC-LC, HE-AAC (aacPlus) v1 & v2, MP3
Поддържани 1n/0ut видео/аудио файлови формати:
FLV (Flash Video - .flv)
MP4 (QuickTime container - .mp4, .f4v, .mov, .m4v, .mp4a, .3gp, and .3g2)
MP3 (.mp3)
PIFF (.ism, .ismc, .ismv, .isma)
Приложими протоколи и спецификации съгласно стандарт
RTSP: IETF RFC2326
RTP: H.264 IETF RFC3984, QuickTime Generic RTP Payload Format
RTP: ACC[/b ]IETF RFC3640 IETF RFC3016 ISO/IEC 14496-3
RTP: MP3 IETF RFC2250
RTP: Speex IETF RFC5574
MPEG-TS ISO/IEC 13818-1
MPEG-TS over RTP IETF RFC2038


Минимални препоръчителни системни (хардуерни) изисквания:

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

Платформи за разпространение
Adobe Flash
Apple iOS: iPhone, iPad, and iPod touch
Microsoft Silverlight
Apple QuickTime
Android, Blackberry and other 3GPP platforms
Set Top Boxes и всичко, което е способно да приема мултимедийни стриймове.


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
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

Системни настройки

Мнение от error_404 »

Във Environment Variables се добавят следните променливи
(My Computer > Properties > Advanced > Environment Variables)

System Variable / Системни променливи
Variable name / Наименование на променлива: WMSAPP_HOME
Variable value / Стойност на променлива: E:\streamer

Variable name / Наименование на променлива: WMSCONFIG_HOME
Variable value / Стойност на променлива: E:\streamer

Variable name / Наименование на променлива: WMSINSTALL_HOME
Variable value / Стойност на променлива: E:\Wowza\ (има \ накрая)

Variable name / Наименование на променлива: JAVA_HOME
Variable value / Стойност на променлива: C:\Program Files\Java\jdk1.7.0_21

Variable name / Наименование на променлива: CLASSPATH
Variable value / Стойност на променлива: .;C:\Program Files\Java\jre7\lib\ext\QTJava.zip (има .; пред пътя)

Variable name / Наименование на променлива: Path
Variable value / Стойност на променлива: C:\Program Files\Java\jdk1.7.0_21\bin;C:\Program Files\QuickTime\QTSystem\

Variable name / Наименование на променлива: JAVA_TOOL_OPTIONS
Variable value / Стойност на променлива: -Dfile.encoding=UTF8

Тази променлива указва, че всички входно изходни файлове ще бъдат в кодировка UTF-8 иначе се използва тази, с която Ви е конфигурирана операционната система ;)
User Variable / Потребителски променливи
Variable name / Наименование на променлива: PATH
Variable value / Стойност на променлива: C:\Program Files\Java\jdk1.7.0_21\bin
Ако в някои от променливите имаме запис, то отделяме съществуващият запис с ";"
(вж. реда в червено)


HOSTS File Modify / Модифициране на HOSTS файл
(%SystemRoot%\system32\drivers\etc > hosts)

Добавете следните редове във Вашият HOSTS файл за да избегнем проверката за лиценз!

Код за потвърждение: Избери целия код

# Block Wowza Servers
# 96.30.11.104 - Wowza Media License Server
127.0.0.1 wowzalicense.wowzamedia.com
127.0.0.1 wowzalicense1.wowzamedia.com
127.0.0.1 wowzalicense2.wowzamedia.com
127.0.0.1 wowzalicense3.wowzamedia.com
127.0.0.1 wowzalicense4.wowzamedia.com
127.0.0.1 wowzalicense5.wowzamedia.com
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

Допълнителни настройки

Мнение от error_404 »

Запазено - Допълнителни настройки
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

Мрежови настройки

Мнение от error_404 »

Та за да работи нашият стрийм сървър ще трябва да пренасочите (NAT) следните портове на рутера си:

Код за потвърждение: Избери целия код

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
Същата операция трябва да извършите и на машината, която е сървър в мрежата, т.е. във Firewall, който ползвате да изолирате посочените портове.
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

Тестова постановка

Мнение от error_404 »

Използваме за целта безплатен 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/
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Аватар
Diabolik
Старши котарак
Мнения: 477
Регистриран на: 24 Дек 2012 12:30

Re: In progress: Make Own Stream Server - Windows

Мнение от Diabolik »

nice, me likes it!
Аватар
error_404
Глобален модератор
Мнения: 360
Регистриран на: 22 Дек 2012 10:58

In progress: Make Own Stream Server - DebiaNginx

Мнение от error_404 »

В основата на проекта е 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 управлението и запис на стриймовете.
Изображение
"За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата."
К.Иречек, 13.12.1881
Публикувай отговор