Skip to content
Konstantin Bogdanoski edited this page Mar 11, 2020 · 10 revisions

Споделување на видеа преку HLS

Целта на овој проект е да се имплементира стримање – споделување на мултимедиски содржини, поточно видеа, со произволна големина, вo m3u8 формат, а со многу лесна промена во кодот може и да се користи mpd форматот. Исто така видеата потребно е да бидат енкриптирани со код. Секое видео да добива сопствен String token со кој ќе може да се отклучи содржината. Целосната имплементација можете да ја видите на git.com. Имплементација Овој проект е составен од 3 компоненти:

  1. SpringBoot апликација – за бизнис логиката на апликацијата
  2. ReactJS апликација – за веб кориснички интерфејс
  3. Shell скрипти – за форматирање и енкриптирање на видеото

SpringBoot апликација

SpringBoot апликацијата е доста едноставна. Се базира врз REST принципите и во неа има:

  1. Model:
  • Base
  • BaseEntity
  • UserRole
  • User
  • Video
  • Quality
  1. Web:
  • AdminController
  • MainController

За слојот за базата на податоци и сервисниот слој изоставени се податоците бидејќи се подразбира дека треба да бидат имплементирани за да работи апликацијата.

Апликацијата исто така е заштитена со едноставан OAuth JWT автентикација и авторизација. Имплементацијата е достапна на горенаведениот git.Aпликацијата во себе содржи неколку класи кои се потребни за да функционира подобро.

Тоа се Initializer.java и CustomExceptionHandler.java. Можете да ги погледнете и лесно е да се заклучи за што служат. Во секоја класа е поставено соодветно објаснување за методите. Доколку имате некакво двоумење, слободно контактирајте не на mail. Покрај java класите, потребно е да се постават соодветно application.properties. Можете слободно да ги погледнете на git.

ReactJS апликација

За корисничкиот интерфејс се користи исто така едноставна React апликација со неколку компоненти.

Апликацијата би требало да ви функционира без никакви измени, но доколку направите промени на портата од вашата Spring апликација, истата треба да ја пропагирате на само едно место во React апликацијата, тоа е axios компонентата, а таа се наоѓа во frontend/src/axios/axios.js. Сите промени и подобрувања се добредојдени и охрабрени.

Shell скрипти

На git постои само една скрипта и таа делува како master скрипта. Скриптата служи за да се постави квалитетот и да се креира .m3u8 датотека – formatVideo.sh. Потребно е истата да ја поставите во датотеката што е родител на видеата (пр. /home/konstantin/Videos). Покрај преместувањето на таа скрипта, потребно е да се дадат пермисии за апликацијата да ја извршува chmod 755 formatVideo.sh Oсвен таа скрипта, потребно е да направите уште една скрипта m3u8gen.sh, која ќе биде празна, но со исти пермисии како и formatVideo.sh. Неопходно е скриптите да бидат именувани вака и да бидат со потребните пермисии за извршување.

Apache2 конфигурација

За да се овозможи стримањето на видеа, потребно е Apache да се конфигурира за да ги опслужува тие видеа. Едноставна конфигурација треба да се додаде во конфигурациската датотека од Apache. Јас користев Apache2, можете да погледнете како да се направи тоа со NginX, доколку сакате.

<VirtualHost *:80>
DocumentRoot /home/konstantin/Videos/
Alias /videos "/home/konstantin/Videos"
ProxyPass /videos !
ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080
<Directory "/home/konstantin/Videos">
Header set Access-Control-Allow-Origin "*"
Require all granted
</Directory>
</VirtualHost>

Во конфигурациската датотека потребно е само да ги додадете овие линии xml текст. По успешно завршување и тестирање преку systemctl status apache2 / httpd Би требало Apache успешно да работи. (Јас користам Ubuntu 19.10, па конфигурациската датотека се наоѓа во /etc/apache2/sites-enabled/000-default.conf, доколку користите CentOS, датотеката барајте ја како httpd.conf.

Овој проект беше изработен од Константин Богданоски и Наташа Стојанова, заедно со професорот Д-р. Сашо Граматиков, како дел од курсот Мултимедиски Мрежи на Факултетот за Информатички Науки и Компјутерско Инженерство (ФИНКИ), 2019-2020, Скопје, Северна Македонија.

Clone this wiki locally