Hoe te detecteren of er nu een video wordt afgespeeld?

Hoe te detecteren of een video nu wordt afgespeeld met behulp van , , , C# , of ?

Video kan worden afgespeeld/gestreamd in elke lokale speler, web-gebaseerde speler of html5-speler. We kennen de naam van de speler ook niet. Mogelijk staat de speler niet op het volledige scherm.

PS. Het detecteren van de CPU-belasting geeft mogelijk niet altijd het juiste resultaat, dus het is niet acceptabel.

0
Wat bedoel je met "elke video die nu wordt afgespeeld"? Waar? Overal op internet? Deze vraag is onmogelijk te beantwoorden. -1.
toegevoegd de auteur Eitan T, de bron
@ide Welk besturingssysteem? Welk type video? Wordt een geanimeerde GIF beschouwd als een video? Heb je een lijst met bekende apps die de media afspelen die je wilt monitoren, of beschouwt je vraag een videospeler? Als ik mijn eigen videospeler schrijf die mijn eigen videoformaat afspeelt, verwacht je dan dat het wordt gedetecteerd? Zie je waar ik heen ga?
toegevoegd de auteur Eitan T, de bron
Dit lijkt mij niet mogelijk om op afstand nauwkeurig te zijn. Waarom wil je dit doen?
toegevoegd de auteur Tim S., de bron
Mijn gok is dat dit onmogelijk is om te doen zonder giswerk. (Controleren op bekende videobestandsextensies in open bestandsgrepen/HTTP-verbindingen en vervolgens zien of processen die toegang hebben tot videobestanden een hoge CPU-belasting hebben.)
toegevoegd de auteur millimoose, de bron
@TimS. Ik wil dat mijn script alleen wordt uitgevoerd als er geen video wordt afgespeeld/gestreamd, dus ik moet het detecteren.
toegevoegd de auteur ide, de bron
@EitanT Ik bedoel dat het op mijn pc wordt gespeeld, maar zonder de bron van video/stream te kennen.
toegevoegd de auteur ide, de bron
@EitanT Windows 7 en elk type video inclusief streams zonder GIF. Ik heb het, maar ik kan Chrome niet controleren omdat ik net een YouTube-video heb geopend in html5 en er is geen idee in de commandoregel van gerelateerd Chrome-proces over het afspelen van een video.
toegevoegd de auteur ide, de bron
@EitanT Waarschijnlijk moet je speler nu aan de Windows vertellen dat er een video wordt afgespeeld, dus ik denk dat het antwoord op mijn vraag zo simpel is als dat je deze venstervariabele bekijkt.
toegevoegd de auteur ide, de bron

1 antwoord

Ik heb hier een klein beetje werk van gemaakt. Er is een WIN32API (oude school) die krijgt/instelt om de screensaver al dan niet uit te schakelen (in user32.dll, GetScreenSaverActive (), SetScreenSaverActive - zie: http://www.codeproject.com/Articles/17067/Controlling-The-Screen-Saver-With-C ) . Dit is de meest waarschijnlijke vlag die moet worden ingesteld wanneer een video wordt afgespeeld, maar niet 100% betrouwbaar, omdat niet elke speler deze zal implementeren. Het werkt voor de meeste browservideo's, ongeacht of het wordt afgespeeld via plug-in, native of via DirectX. Dit werkt ook voor de meeste (alle?) Externe spelers zoals vlc, windvd, etc.

Maar.

Er is geen 100% manier om een ​​videospelletje te bepalen. Jij kan niet;  1. Controleer of het geluid klinkt, aangezien de gebruiker mogelijk iTunes gebruikt en niet alle video's geluid hebben  2. Controleer op volledig scherm (meestal de betere optie) omdat de video mogelijk in een browser wordt afgespeeld  3. Controleer de cpu/gpu-belasting omdat deze niet betrouwbaar is en u niet op een andere manier kunt bepalen  4. Wees er absoluut zeker van dat de speler de win32-vlag niet heeft gewist/gereset wanneer geminimaliseerd

Een andere optie is om te proberen een lijst met mogelijke uitvoerbare namen voor alle bekende spelers te verzamelen (uitvoerbaar maar tijdrovend om gegevens te vinden, vooral in oudere versies) en controleer of ze worden uitgevoerd. Dit is niet 100% betrouwbaar, ofwel als een plug-in door voorgeladen te zijn, maar een browser, maar niet daadwerkelijk een video af te spelen op dat moment.

Kortom, er is geen 100% manier die ik ken, maar op verschillende manieren krijg je er 90-95% bij. Dat is het doel om te weten of er een video wordt afgespeeld? Misschien is er een gemakkelijkere manier om te vinden waarnaar u op zoek bent ...

2
toegevoegd
@Bonner 웃, waar. Dit komt erop neer dat er geen 100% zekere manier is om het te doen
toegevoegd de auteur DiskJunky, de bron
Dit werkt alleen als de screensaver is ingeschakeld.
toegevoegd de auteur Bonner 웃, de bron