> Does anyone know of a way to grab video playing on the
> screen using either the screen codec or some other
> method? Currently when I capture I just get a black area
> where the video is being displayed. I assume that is
> because the video is displayed in a different plane. Can
> the screen codec or some other codec access the video?
The codec is irrelevant. Screen capture captures the
screen's bitmap, but videos are rendered on an overlay
surface for performance and quality reasons. Disable the
hardware video acceleration in the global display settings
(Control Panel -> Display), DirectX settings (dxdiag.exe) or
player settings (if any). Beside "hardware video
acceleration", this setting can be named "overlay" or
"DirectDraw overlay".
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
The suggestion that Mr. Angeli makes will certainly work, but it's a bit
drastic. What you can do in your app is grab the overlay surface. This
way video will be displayed on the primary surface which you will be
able to capture.
Of course, if WMP was started before your app, this approach won't work.
.a
Thanks,
The best approach would be for the players' vendors to provide APIs for
reading videos frame by frame. Don't know how feasible that is.
But in general, I think not going through overlay surface won't degrade
video quality too much. So you can grab the overlay surface/reduce HD
acceleration (you don't need to go all the way to no acceleration) and
use Media Encoder to capture a specific window.
hth,
.a