windows - Media Foundation screenshot hook

Indlæg af Hanne Mølgaard Plasc

Problem



Det er påkrævet at tage et skærmbillede fra applikationen til det rigtige tidspunkt (det kan være blokeret, sammenbrudt eller endda i en anden session). Programmet afspiller en videostrøm gennem Media Foundation:





Som jeg forstår er det nødvendigt at opfange MFCreateMediaSession, hvad skal man modtage IMFMediaSession, kun her, hvad mere med dette objekt at gøre? Og kan den fås fra en anden tråd?

Bedste reference


Jeg ser, at du skrev ansøgning på basis af Media Foundation til afspilning af video - og du har brug for at tage videobilleder som en adskilt afkodede ramme. Så du har to muligheder:



  1. Tag videorammer fra renderer: Den almindelige Media Foundation renderer har IMFVideoDisplayControl interface - på MSDN IMFVideoDisplayControl - den har kommando GetCurrentImage - henter en kopi af det aktuelle billede, der vises af videoredigereren - på MSDN GetCurrentImage.

  2. Den anden måde - vedhæft sample grabber sink til video pipeline - Media Foundation funktion MFCreateSampleGrabberSinkActivate gør det muligt at skabe synke fra sample grabber objekt med IMFSampleGrabberSinkCallback interface - det giver mulighed for at få afkodede videobilleder i formatet Bitmap billeder i System Memory. Brug af prøvegrabber er vanskeligere, og jeg kan anbefale mit projekt Capturing Video fra Web-kamera på Windows 7 og 8 ved at bruge Media Foundation til at undersøge den måde.



Hilsen. [6] [7] [8] [9]