Возникла немного нетипичная задачка - устроить людям вещание в интернете. Для этого можно использовать много средств, но мы будем использовать Flussonic - в бесплатной версии он умеет все, что нам надо. Запись - это дело десятое.
После долгих мучений и репозиториев был выбран дистрибутив Ubuntu Server 12.04.2 LTS.
Устанавливается крайне просто:
echo "deb http://binaries.erlang-solutions.com/debian precise contrib" >> /etc/apt/sources.list
echo "deb http://debian.erlyvideo.org binary/" >> /etc/apt/sources.list
wget -O - http://binaries.erlang-solutions.com/debian/erlang_solutions.asc | sudo apt-key add -
wget -q -O - http://debian.erlyvideo.org/binary/gpg.key | apt-key add -
apt-get update
apt-get -y install esl-erlang flussonic
Итак, источников вещания у нас 2.
1. IP-камера Axis 210 (Такое себе старье без H.264).
Будем вещать через RTSP. Ее надо перекодировать. Для этого будем использовать VLC
apt-get install vlc x264
VLC выкладывает http поток на свой порт 9090, оттуда его забирает Flussonic и отдает JwPlayer'у RTSP поток.
файл startvlc.sh
#!/bin/sh
TR='transcode{venc=x264{cabac=yes,bframes=0,keyint=125,qpmin=20,qpmax=50,ref=5,merange=24,mixed-refs=yes,direct=auto,me=umh,subme=7,trellis=2,weightb=yes,partitions=all,vbv-maxrate=920,vbv-bufsize=9000,ratetol=100.0,scenecut=60},vb=820,,width=720,height=576,hurry-up,audio-sync,deinterlace=yes,acodec=aac,aenc=avcodec{strict=-2},ab=64,channels=2,samplerate=48000}'
OUT="std{access=http,mux=ts{use-key-frames=1},dst=:9090}"
cvlc -vvvv rtsp://root:passw@CAMERA-IP/mpeg4/media.amp --intf dummy --sout '#'${TR}:${OUT}
echo "{stream, "vlc.ts", "tshttp://VLC-IP:9090/"}." >> /etc/flussonic/flussonic.conf
/etc/init.d/flussonic start
После этого в панели по адресу FLUSSONIC-IP:8080 убедимся, что поток виден и его можно посмотреть.
Примерный код для index.html
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
</script>
<script type="text/javascript">
var flashvars = {
file : "vlc.ts",
streamer:'rtmp://FLUSSONIC-IP:1935',
'rtmp.tunneling':false,
autostart: true
};
var paramObj = {allowScriptAccess : "always", allowFullScreen : "true", allowNetworking : "all"};
swfobject.embedSWF("http://FLUSSONIC-IP:8080/flu/jwplayer.swf", "video", 720, 576,
"10.3", "/flu/expressInstall.swf",
flashvars, paramObj, {name: "jwplayer"});
</script>
2. Adobe FLME.
Будем забирать по HDS (что бы это ни значило :) )
Тут немного проще, указываем FMLE в адресе сервера наш flussonic в виде
Адрес: rtmp://FLUSSONIC-IP/live
Поток: livestream
AFLME выкладывает RTMP поток на Flussonic, оттуда он рестримит по HDS плееру.
В панели по адресу FLUSSONIC-IP:8080 убедимся, что поток виден и его можно посмотреть.
Примерный код для index.html
<div id="video"></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
</script>
<script type="text/javascript">
var flashvars = {
src : "http://FLUSSONIC-IP:8080/live/livestream/manifest.f4m",
autoPlay: true
};
var paramObj = {allowScriptAccess : "always", allowFullScreen : "true", allowNetworking : "all"};
swfobject.embedSWF("http://FLUSSONIC-IP:8080/flu/StrobeMediaPlayback.swf", "video", 720, 576,
"10.3", "/flu/expressInstall.swf",
flashvars, paramObj, {name: "StrobeMediaPlayback"});
</script>
Вообще, советую приобщиться к инструкциям на сервере проекта :) Для знающих людей они будут полезнее моих :)
No comments:
Post a Comment