VLC paraméterezése streamelésre

Fórumok

Sziasztok!

Köszönöm a válaszokat az előző kérdésemre, a VLC-t választottam. (Téma: link)

Ha manuálisan elindítom, akkor tökéletesen működik a közvetítés. Ilyenkor a beállítások:
Új közvetítés indítása után a Felvevőeszközt választom, majd a cél beállításánál a HTTP-t, beállítom a 11111 portot, majd az átkódolásnál az MP4-et választva elindítom a közvetítést, akkor tökéletesen működik, másik gépen indítva a VLC-t látom a kamera képét.

Ezt szeretném úgy megcsinálni, hogy parancssorból indítva lehessen a közvetítést elindítani, a kolleganők, akik használják, informatikában gyerekcipőben járnak, nem is értenék az előző lépéssort.

A következő parancssor tökéletesen elindítja a közvetítést egy létező videó lejátszásával:

vlc.exe -vvv C:\Teszt\EnVideom.mp4 --sout "#duplicate{dst=std{access=http,mux=ts,dst=:11111}}"

A lejátszás indítása:

vlc.exe http://192.168.20.115

ahol az IP cím annak a gépnek a címe, ahol a közvetítés fut. Tökélesen működik, látom a filmet

Ha a következő parancsot írom be:

vlc.exe dshow://

akkor elindul a VLC és egyből mutatja is a kamera képét

Viszont a következő utasítás:

vlc.exe -vvv dshow:// --sout "#duplicate{dst=std{access=http,mux=ts,dst=:11111}}"

látszólag elindítja a közvetítést, de a másik gépen azt a hibaüzenetet kapom, hogy a stream nem nyitható meg.

Mit kellene beírnom, hogy működjön? Ennek az sout paraméternek abszolút nem értem a felépítését...

Gábor

Hozzászólások

Szerkesztve: 2025. 02. 13., cs – 17:38

Hűha, jó rég csináltam ilyent... De határozottan úgy emlékszem, hogy a VLC felületén össze lehetett kattogtatni, aztán meg kikopipasztázni az ahhoz a beállításhoz tartozó parancssort.

majd az átkódolásnál az MP4-et választva

Ezt kerülném a helyedben, mert iszonyat lassú. Egyébként a parancssorod alapján nincs átkódolás, csak a konténert cseréli le, ami gyors. Szerintem maradj meg ennél.

Ennek az sout paraméternek abszolút nem értem a felépítését...

Nem is kell, a felület elvileg összerakja neked. Egyébként itt nem az sout-al van gondod, hanem a stream in-el, én a helyedben arrafelé nézelődnék. Nekem anno sikerült megoldanom pontosan ugyanezt, igaz, Linux alatt V4L API-val. Ha minden kötél szakad, akkor megpróbálhatod a kamerát egy Linuxos gépre rakni, a kliensek futhatnak továbbra is Windows-on.

Ja, és ha jól emlékszem, nekem nem http-vel jött össze, hanem rtp-vel. De ez sok sok éve volt már, azóta sok minden változhatott a VLC-ben. Mindenesetre az rtp protokoll alkalmasabbnak tűnik az esetedben, szvsz érdemes errefelé is nézelődni.

Mit kellene beírnom, hogy működjön?

transkódolni kellene szerintem.

Fedora 41, Thinkpad x280

Szerkesztve: 2025. 02. 14., p – 02:28

Ha csak a képet kell átvinni, akkor meg lehet úszni átkódolás nélkül is, legalábbis nálam ez működött:

vlc dshow:// --dshow-size=1280x720 --dshow-fps=30 --sout="#http{mux=mpjpeg,dst=:11111}"

Ha hang is kell, akkor már más konténert kell választani. Elvileg ts-ben is átmegy az MJPEG, de ez nálam nem működött megfelelően. Asf-ben viszont megy átkódolás nélkül a kép és a hang is.

Átkódolással így néz ki egy MPEG stream:

vlc dshow:// --dshow-fps=30 --dshow-size=1280x720 --dshow-aspect-ratio=16:9 --sout="#transcode{acodec=mpga,vcodec=mpgv}:http{mux=ts,dst=:11111}"

Lehet más codecekkel és konténerekkel is kísérletezni, de célszerű minél kevésbé CPU intenzívet választani, mivel helyi hálózaton valószínűleg nem a sávszélesség lesz a szűk keresztmetszet. Csak arra kell figyelni, hogy a konténer támogassa a választott kodekeket és egyéb kódolási beállításokat.

Köszönöm szépen, ki fogom próbálni!

Eddig két verzióval jártam sikerrel:

vlc dshow:// --sout "#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ffmpeg{mux=flv},dst=:11111/}"

Ez szép képet ad lejátszásnál, de durván 10-12 másodpercet késik.

vlc dshow:// --sout "#transcode{vcodec=h264,vb=800,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ts,dst=:11111/}"

Ez is még értékelhető képet ad, 3-4 másodperces késéssel.

Gábor