Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VLC 2.0.6] Streamen van meerdere files en/of playlist

Pagina: 1
Acties:

  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 23:55
Beste allemaal,

Als eerste een korte introductie wat ik wil bereiken. Deze tweaker is binnenkort jarig en geeft een feestje. En net als veel andere tweakers heb ik een heleboel hardware liggen die ik niet gebruik (aantal PC's een 37" LCD etc). Dus wat was mijn idee? Ik zet op meerdere plekken computers neer die tegelijk muziekclips afspelen. Het meest voor de hand liggende optie is een stream, zeg maar een soort TV-uitzending die je kan afspelen op de verschillende computers. Het beeld zou dan in principe overal nagenoeg gelijk moeten lopen. Ik ben daarbij op VLC player uitgekomen als streaming server. Het is open source en heeft gigantisch veel opties. Helaas blijkt niet alles even duidelijk gedocumenteerd te zijn en loop ik tegen wat dingen aan.

Laat ik beginnen met dat ik behoorlijk ver gekomen ben, maar ik mis de 'finishing touch' om het zo te zeggen. Via de interface van VLC player kan je eigenlijk maar één film tegelijk streamen. Als de film afgelopen is, dan stopt de stream. Ook al kan je als source van de stream meerdere bestanden of een playlist selecteren, uiteindelijk wordt er maar één file afgespeeld. Dat is niet wat ik wil, ik wil immers een hele lijst met clips hebben op random kunnen streamen.

VLC kan je gelukkig ook opstarten met command parameters en dan heb je ineens een stuk meer opties. Ik ben tot het volgende gekomen (bat file die ik gebruik om VLC te starten):
code:
1
2
3
c:
cd\Program Files (x86)\VideoLAN\VLC
vlc "file:///s:/music/clips/" --random --loop --ttl="5" --sout="#transcode{vcodec=mp2v,vb=1200,scale=1,acodec=mpga,ab=512,channels=2,samplerate=44100}:http{mux=ts,dst=:8080/stream}" --sout-keep

Wat dit doet, is alle bestanden in s:\music\clips in een playlist zetten op random en loop en een transcode stream (MP2) starten op http://<computer>:8080/stream. Dit werkt in principe goed. Echter, de stream wordt afgebroken na elk nummer, terwijl '--sout-keep' dit zou moeten voorkomen. VLC aan de ontvangende kant stopt met afspelen aan het einde van het nummer. Als je meteen daarna weer connect is er al een stream met het volgende nummer beschikbaar. Er wordt blijkbaar per nummer een nieuwe stream gestart. Ik encode alles, omdat je niet gedurende een stream kan switchen van resolutie, bitrate en file type. Dit zou een consistente stream moeten opleveren die met --sout-keep open zou moeten blijven. Dat helpt dus ook niet.

Zoals je ziet heb ik voor een http-stream gekozen, terwijl ik denk dat het niet de beste stream is die je kan gebruiken. Volgens mij is een rtsp-stream bijvoorbeeld al beter. Echter, bij een HTTP stream kan je in VLC aan de ontvangende kant instellen dat er gereconnect moet worden bij het verlies van de HTTP stream. Dit werkt ook prima op zich, want je ziet eigenlijk niet dat er opnieuw geconnect wordt aan het einde van een nummer en aan het begin van een nummer. Op deze manier krijg je een consistente ervaring waarbij het volgende nummer begint met spelen zodra de vorige stopt zonder dat je eerst terug springt naar het bureaublad.

So far so good? Nou nee, het probleem is dat er elke keer opnieuw verbinding gemaakt moet worden (reconnecten) en dat je daardoor afwisselende synchronisaties krijgt tussen de verschillende PC's. Het doel is om de PC's nagenoeg gelijk te laten lopen en dat wisselt nogal als ze telkens moeten reconnecten. Ik heb gehad dat ze soms meer dan een seconde asynchroon lopen.

Wat wil ik nou bereiken? Nou in eerste instantie dat er op meerdere computers een video synchroon afgespeeld wordt. Dat doel is bijna bereikt. Als ik het voor elkaar krijg om de stream open te laten, dan denk ik dat als de computers eenmaal synchroon lopen, dat ze dat ook zullen blijven doen. Mocht iemand nog hele andere ideeen hebben (zonder VLC), dan hoor ik het natuurlijk graag.

Alvast bedankt!

PS, met de '--random' optie wordt de playlist ECHT random afgespeeld. Met 'ECHT random' bedoel ik dat het mogelijk is dat sommige nummers vaker afgespeeld kunnen worden dan anderen. Is er ook een soort pseudo-random, waarbij alle nummers even vaak in willekeurige volgorde afgespeeld worden?

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3


  • FitzJac
  • Registratie: November 2010
  • Laatst online: 08:46
https://www.videolan.org/doc/streaming-howto/en/ch05.html Hiermee moet je er wel uit komen, onder het kopje Multiple streaming.

  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 23:55
Helaas is dat niet wat ik zoek. Dat gaat over het opzetten van meerdere streams. Ik wil één stream voor meerdere bestanden of playlist. Thanks anyway!

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3


  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 23:55
Het lijkt erop dat het gelukt is. Ik was nog een keer aan het proberen een rtsp stream te starten, maar weer kwam ik bij het probleem uit dat de stream stopt na één bestand. Echter, met onderstaande bat file om vlc op te starten lijkt het te werken. De combinatie tussen --sout-keep en mux=ts lijkt de oplossing te zijn:

code:
1
2
3
c:
cd\Program Files (x86)\VideoLAN\VLC
vlc "file:///s:/music/clips/" --random --loop --ttl="5" --sout-keep --sout="#transcode{vcodec=mp2v,vb=1200,scale=1,acodec=mpga,ab=512,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/stream,mux=ts}"


Dit opent VLC player en plaatst alle bestanden in s:\music\clips in de playlist op random en met loop. Er wordt een rtp stream gestart op poort 8554 met naam 'stream'. Deze worden tijdens het spelen getranscode naar MPEG2, met een bitrate van 1200.

Ik ga nog even wat verder experimenteren om te kijken of dit ook echt klopt allemaal.

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3


  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 23:55
Het probleem is nu nog dat de streams op meedere computers niet precies gelijk lopen. Dit is natuurlijk te verklaren door verschillen in de netwerk latency, maar vervelend is het wel. Nou zit er in VLC Player een optie 'Network sync' die dit probleem om zou moeten lossen. Maar tot nu toe lijkt het niks te doen. Ik ga verder experimenteren of ik het werkend kan krijgen.

In het algemeen is het gelijktijdig afspelen van hetzelfde videobestand om meerdere computers een probleem is al gebleken. De beste oplossingen zijn vaak hardware based, of hele dure softwareoplossingen. Het is allemaal dus nog niet zo makkelijk!

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3


  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 23:55
Ik ben er uiteindelijk uitgekomen en heb er een blog over geschreven voor de liefhebber:
Luuk's blog: Use VLC to play multiple video clips on multiple computers in sync

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3

Pagina: 1