01:33, 14 | 12 | 2018

CentOS 6 Apache streaming

Waarom?

De voordelen van kunnen "streamen" is er geen complete download nodig is alvorens een bestand afgespeeld kan worden. Een normale "GET" actie op een webserver van een bestand begint een download bij het begin.

Dit is ook de reden dat er voor het downloaden van grote bestanden vaak downloadmanagers worden aangeboden. Na het onderbreken van de download kan dan weer begonnen worden waar de download was geƫindigd in plaats van alles opnieuw te downloaden.

Nu valt dit principe voor reguliere files makkelijk te implementeren; echter voor videobestanden ligt het ingewikkelder. Een manier om videobestanden klein te houden is door te werken met een zogenaamde delta stream. Hoewel een film niets meer is dan een opeenvolging van frames, zegt dit niets over hoe de frames opgebouwd worden. Veelal verandert er weinig t.o.v. de vorige frame, en wordt alleen de mutatie doorgegeven. Complete frames heten zogenaamde "key frames". De streaming extensie zorgt ervoor dat er een correcte stream wordt afgeleverd die meteen kan worden afgespeeld zonder visuele tekortkomingen.

Eea kan worden getest door via de commandline een film te downloaden met wget en als parameters "start" en "stop" mee te geven, b.v. wget www.bla.com/movie.mpg?start=5&stop=10

Op deze manier worden slechts de tweede 5 seconden van de film gedownload.

Volgende stappen zijn bedoeld voor een CentOS 6.x installatie met cPanel.

wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz
cd /mod_h264_streaming-2.2.7
./configure --with-apxs='/usr/local/apache/bin/apxs'
make && make install && /usr/local/cpanel/bin/apache_conf_distiller --update

Omdat onder cPanel de Apache configuratiebestanden dynamisch worden opgebouwd dient dit in aparte bestanden weggeschreven te worden; echter op een non cPanel installatie kunnen de standaard bestanden/manieren gebruikt worden.

/usr/local/apache/conf/includes/pre_virtualhost_global.conf :
LoadModule h264_streaming_module modules/mod_h264_streaming.so
<IfModule mod_h264_streaming.c>
AddHandler h264-streaming.extensions .mp4
</IfModule>

LoadModule flvx_module modules/mod_flvx.so
<IfModule mod_flvx.c>
AddHandler flv-stream .flv
</IfModule>

Voor het embedden kunnen we de Flowplayer gebruiken.