26 лютого 2011 р.

Трансляція відео, аудіо через мережу за допомогою VLC плеєра.

Так сталося що став я зацікавлений у трансляції різноманітного матеріалу через мережу.
Почав десь у 1998-1999 році робити ретрансляції місцевих радіостанцій до локальної мережі, та і до мережі інтернет використовуючи програмне забезпечення фірми RealMedia. Навіть працював мій сайт з підтримки трансляції, на якому був статус активний трансляцій тощо.
Але час сплинув, зараз це вже нікому не цікаво, а ось у локальній мережі є потреба транслювати або ретранслювати наприклад футбольні матчі.
На зараз для трансляції використовую дуже популярний крос платформовий медіа плеєр VLC.
Наразі є можливість зробити всі налаштування використовуючи інтерфейс програми, але для постійного вживання наведу приклади файлів сценаріїв за допомогою котрих це робити простіше. Сценарії написані для використання під керуванням операційної системи MS Windows. Для цього їх треба зберегти до файлів з розширенням .cmd, або .bat.




Підключення для перегляду трансляцій з адреси "http://ip:port", ох і тяжко інколи навчити користувачів зробити підключення 

@echo off
set src=http://ip:port
set ddd32=%ProgramFiles%\VideoLAN\VLC\
set ddd64=%ProgramFiles(x86)%\VideoLAN\VLC\
if EXIST "%ddd32%" set ddd=%ddd32%
if EXIST "%ddd64%" set ddd=%ddd64%
start "VLC VIEW" /D"%ddd%" vlc.exe -vvv %src% --video-on-top --repeat -vvv --vout-filter deinterlace --deinterlace-mode blend

Трансляція з Вашого ТВ-тюнера чи відеокарти з відео входом (з клоном зображення).

echo off
rem ************************************
rem *** http://lexxai.co.cc (c) 2008 ***
rem ************************************

REM VIDEO CAPUTURE SETTINGS -------------------------------
REM IF TUNER_* VARIABLE SET TO BLANK THEN USED DEVICES BY DEFAULT
rem set tuner_vid_dev=nVidia WDM Video Capture (universal)
rem set tuner_aud_dev=Realtek AC97 Audio

set pic_size=384x288

REM NETWORK SETTINGS --------------------------------------
set port=8080
set speed=1024
set ddd32=%ProgramFiles%\VideoLAN\VLC\
set ddd64=%ProgramFiles(x86)%\VideoLAN\VLC\
if EXIST "%ddd32%" set ddd=%ddd32%
if EXIST "%ddd64%" set ddd=%ddd64%

IF EXIST "%ddd%vlc.exe" GOTO OK
echo .
echo *********************************************************************
echo * Please install VLC (VideoLan) player
echo * it must placed here %ddd%vlc.exe
echo *********************************************************************
echo .
pause
exit

:OK
cls
taskkill /F /IM vlc*

start /ABOVENORMAL /D"%ddd%" vlc -vvv dshow:// :dshow-vdev="%tuner_vid_dev%" :dshow-adev="%tuner_aud_dev%" :dshow-size="%pic_size%" :dshow-fps=50.000000 :sout=#transcode{vcodec=mp4v,vb=%speed%,scale=1.0,acodec=mp3,ab=64,channels=1}:duplicate{dst=display,dst=std{access=http,mux=ts,dst=:%port%}}

echo.
echo Now you will see just opened VLC player with movie and broadcast function.
echo.
echo.

rem IP detection

FOR /F "skip=3 tokens=1,3 delims=:- " %%a in ('ipconfig') do IF " IP"=="%%a" call :oop %%b
pause
exit

:oop
echo *********************************************************************
echo *
echo * Your IP: %1
echo *
echo *********************************************************************
echo * Use at VLC's clients this URL: http://%1:%port%
echo *********************************************************************
echo.
goto :eof

pause




Ретрансляція з адреси "http://ip:port"
@echo off 
rem ***** place this file to "C:\Program Files\VideoLAN\VLC" *********
rem ***** after run this file
rem ***** after that all clients may connect to you by using your IP:8080
rem *****
rem ***** (C) 2008, http://lexxai.co.cc
rem *****

taskkill /F /IM vlc*
set ddd32=%ProgramFiles%\VideoLAN\VLC\
set ddd64=%ProgramFiles(x86)%\VideoLAN\VLC\
if EXIST "%ddd32%" set ddd=%ddd32%
if EXIST "%ddd64%" set ddd=%ddd64%

set src=http://ip:port

IF EXIST "%ddd%vlc.exe" GOTO OK
echo .
echo *********************************************************************
echo * Please install VLC (VideoLan) player
echo * it must placed here %ddd%vlc.exe
echo *********************************************************************
echo .
pause
exit

:OK
cls
start "VLC RETRANSLATOR" /ABOVENORMAL /D"%ddd%" vlc.exe %src% --sout "#duplicate{dst=std{access=http,mux=ts,dst=:8080}}" --repeat
echo .
echo Now you will see just opened VLC player with movie and retranslate function.
echo .
echo .
rem IP detection

FOR /F "skip=3 tokens=1,3 delims=:- " %%a in ('ipconfig') do IF " IP"=="%%a" call :oop %%b
pause
exit

:oop
echo *********************************************************************
echo *
echo * Your IP: %1
echo *
echo *********************************************************************
echo * Use at VLC's clients this URL: http://%1:8080
echo *********************************************************************
echo .
goto :eof
Аналіз кількості підключених до Вас клієнтів 
echo offset port=8080
set ipsub=172
:begin
cls
echo **********************************************
echo **********************************************
echo ******** who connect to you *************
echo **********************************************
echo port:%port%
echo **********************************************
echo **********************************************
echo ****** http://lexxai.co.cc (c) 2008 ********
echo **********************************************
echo.
echo.
netstat /n |findstr /i "TCP.*%ipsub%.*:%port%.*ESTABLISHED"
echo --------------------------------------------------------------------------
echo COUNT:
netstat /n |findstr /i "TCP.*%ipsub%.*:%port%.*ESTABLISHED"|find /c "TCP"
echo.
echo.
echo Delay 10 sec. For break press CRTL-C.
rem delay 10 sec
@ping 127.0.0.1 -n 10 -w 1000> nul
goto begin


Трансляція сигналу з сателіта що був оброблений програмою DVB Dream.
 DVB Dream оброблює сигнал, виділяючи потрібний канал, за необхідністю декодує і транспортним потоком видає один канал UDP потоком, наприклад до 127.0.0.1. VLC плеєр отримує потік, транскодує з новим кодеком h264, змінює розмір  чи обрізає зайве зображення, або накладає свій логотип з файлу logo.png . Потім VLC працює як сервер, до котрого підключаються ніші клієнти.

taskkill /F /IM vlc*
start /ABOVENORMAL vlc udp://@ :sout=#transcode{vcodec=h264,vb=2500,fps=25,scale=1,acodec=mp4a,ab=64,channels=1,samplerate=22050,deinterlace,sfilter=logo}:duplicate{dst=std{access=http,mux=ts,dst=:8080}} --logo-file logo.png,0,70 --logo-position 6 --logo-y 5 --repeat

 DVB Dream v1.4 (безкоштовна версія ще)

Налаштування  DVB Dream

 DVB Dream, Lan Streaming
VLC як транскодер та як програвач
Якщо треба обрізати зображення що буде транслюватися, то використовуємо цей скрипт:

taskkill /F /IM vlc*
start /ABOVENORMAL vlc udp://@ :sout=#transcode{vcodec=h264,vb=2500,fps=25,scale=1,acodec=mp4a,ab=64,channels=1,samplerate=22050,deinterlace,vfilter=croppadd{croptop=74,cropbottom=78,cropright=10},sfilter=logo}:duplicate{dst=std{access=http,mux=ts,dst=:8080}} --logo-file logo.png,0,70 --logo-position 6 --logo-y 80 --repeat


Хочу зауважити що VLC має можливість використовувати DVB карти через BDA драйвер напряму, і вживання сторонніх програм на кшталт DVB Dream, необов'язкове якщо сигнал не кодований.
lexxai

Немає коментарів:


Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready