Beste PRGers,
Op de zaak hebben wij een videoserver, welke geschikt is voor het uitspelen van ruwe HD-video op 1,5Gb/s. De server is een Dell PowerEdge en er zitten 4 keer 160GB SAS-schijven in RAID1 in om (ook voor de toekomst) genoeg snelheid te kunnen leveren om de video continu uit te kunnen blijven spelen.
Dit werkt allemaal prima. Om de SDI-video uit te kunnen spellen hebben we bij DeltaCast een PCI-e insteekkaart aangeschaft. DeltaCast levert een SDK (in C) aan om tegenaan te programmeren en zo dus video uit te kunnen spelen op relatief hoge snelheden.
De applicatie zelf is ook in C geprogrammeerd (zowel door mij als door een aantal collega's). Deze applicatie draait op Ubuntu 10.04 64bits en werkt naar behoren. Er kan zowel opgenomen worden als uitgespeeld. Dit op verschillende bandbreedtes en op verschillende refreshrates.
Momenteel kunnen een select aantal mensen inloggen op de server middels SSH om zo via de terminal de applicatie te starten. Dit werkt prachtig en op deze manier kan er ook maar één gebruiker tegelijkertijd ingelogd zijn op de machine.
We hebben op de zaak ook een aantal mensen met een aversie voor consoles/terminals en zij hebben aangegeven een GUI te willen voor de videoserver. Onze manager leek dat ook een goed idee, dus heb ik de taak op me genomen om een dergelijke GUI in elkaar te zetten.
Het leek me het eenvoudigste om de GUI in een website te gieten en gebruikers dus op de webserver van de videoserver te laten inloggen en zo via een aantal knoppen de machine te besturen. Echter loop ik nu al tegen een aantal problemen op.
Allereerst is het vrij lastig om vanuit PHP te communiceren met een (draaiend) proces op de videoserver. Daarnaast is de communicatie tussen PHP en de C-applicatie ook niet te doen, want de STD_OUT kan niet worden ingelezen en je bent op een bepaald moment ook de sessie kwijt.
Daarnaast is het lastig om te controleren hoeveel mensen nu daadwerkelijk op de server ingelogd zijn. Ook asynchroon is het erg lastig om te werken in PHP. Ik ben begonnen met een stukje Ajax icm PHP op de webserver, maar dat lijkt een gebed zonder einde. Dit omdat de PHP-deamon met een groot aantal restricties draait, zodat hij niet bij de userspace kan komen.
Ik ben dus op zoek gegaan naar een mogelijke oplossing om een GUI te realiseren om de C-applicatie heen.
Een aantal manieren om een GUI te laten communiceren met de C-applicatie zijn:
Wat ik graag van jullie wil weten is hoe jullie zo'n taak zouden oplossen. Welke vorm van GUI en onderliggende communicatie naar de C-applicatie kan hier het beste / handigste gebruikt worden?
Momenteel is het alleen mogelijk om met de C-applicatie te babbelen middels de commandline-parameters tijdens het opstarten en de STD_IN via de terminal. Ikzelf voel er (nog) niet heel veel voor om een server/host-interface toe te voegen aan de C-applicatie, maar het kan (indien jullie dit aangeven) wel meegenomen worden in de keuzes die ik/we hebben.
Zijn er misschien ook (PHP) Frameworks die een groot gedeelte van deze problematiek voor hun rekening nemen?
Alvast bedankt,
Matis
Op de zaak hebben wij een videoserver, welke geschikt is voor het uitspelen van ruwe HD-video op 1,5Gb/s. De server is een Dell PowerEdge en er zitten 4 keer 160GB SAS-schijven in RAID1 in om (ook voor de toekomst) genoeg snelheid te kunnen leveren om de video continu uit te kunnen blijven spelen.
Dit werkt allemaal prima. Om de SDI-video uit te kunnen spellen hebben we bij DeltaCast een PCI-e insteekkaart aangeschaft. DeltaCast levert een SDK (in C) aan om tegenaan te programmeren en zo dus video uit te kunnen spelen op relatief hoge snelheden.
De applicatie zelf is ook in C geprogrammeerd (zowel door mij als door een aantal collega's). Deze applicatie draait op Ubuntu 10.04 64bits en werkt naar behoren. Er kan zowel opgenomen worden als uitgespeeld. Dit op verschillende bandbreedtes en op verschillende refreshrates.
Momenteel kunnen een select aantal mensen inloggen op de server middels SSH om zo via de terminal de applicatie te starten. Dit werkt prachtig en op deze manier kan er ook maar één gebruiker tegelijkertijd ingelogd zijn op de machine.
We hebben op de zaak ook een aantal mensen met een aversie voor consoles/terminals en zij hebben aangegeven een GUI te willen voor de videoserver. Onze manager leek dat ook een goed idee, dus heb ik de taak op me genomen om een dergelijke GUI in elkaar te zetten.
Het leek me het eenvoudigste om de GUI in een website te gieten en gebruikers dus op de webserver van de videoserver te laten inloggen en zo via een aantal knoppen de machine te besturen. Echter loop ik nu al tegen een aantal problemen op.
Allereerst is het vrij lastig om vanuit PHP te communiceren met een (draaiend) proces op de videoserver. Daarnaast is de communicatie tussen PHP en de C-applicatie ook niet te doen, want de STD_OUT kan niet worden ingelezen en je bent op een bepaald moment ook de sessie kwijt.
Daarnaast is het lastig om te controleren hoeveel mensen nu daadwerkelijk op de server ingelogd zijn. Ook asynchroon is het erg lastig om te werken in PHP. Ik ben begonnen met een stukje Ajax icm PHP op de webserver, maar dat lijkt een gebed zonder einde. Dit omdat de PHP-deamon met een groot aantal restricties draait, zodat hij niet bij de userspace kan komen.
Ik ben dus op zoek gegaan naar een mogelijke oplossing om een GUI te realiseren om de C-applicatie heen.
Een aantal manieren om een GUI te laten communiceren met de C-applicatie zijn:
- Laat PHP XML-bestanden genereren, welke de C-applicatie op zijn beurt weer inleest om aan de hand van de instructies in het XML-bestand acties te ondernemen.
- Een Java GUI-applicatie (cross-platform) met een SSH-verbinding naar de videoserver. Dan kan er telkens maar één persoon inloggen op de server (die SSH-restrictie) en hoeft er niet al te veel te veranderen in de C-applicatie. Daarnaast draait de GUI dan ook op een gebruikersniveau (net zoals de C-applicatie) en is dat probleem weggenomen.
- Maak een Java-applet op de videoserver, dan is de software altijd up-to-date en kan verder op dezelfde manier als bovenstaand werken.
Wat ik graag van jullie wil weten is hoe jullie zo'n taak zouden oplossen. Welke vorm van GUI en onderliggende communicatie naar de C-applicatie kan hier het beste / handigste gebruikt worden?
Momenteel is het alleen mogelijk om met de C-applicatie te babbelen middels de commandline-parameters tijdens het opstarten en de STD_IN via de terminal. Ikzelf voel er (nog) niet heel veel voor om een server/host-interface toe te voegen aan de C-applicatie, maar het kan (indien jullie dit aangeven) wel meegenomen worden in de keuzes die ik/we hebben.
Zijn er misschien ook (PHP) Frameworks die een groot gedeelte van deze problematiek voor hun rekening nemen?
Alvast bedankt,
Matis
If money talks then I'm a mime
If time is money then I'm out of time