Render frames with RenderTargetBitmap, then encode using the codec of your choice. Not very fast, but 24 fps is achievable on a regular PC. We use a similar technique to feed the video stream from the new WPF indicators to an outdated raster system. There may be a better solution, but it works.
I also heard about a solution that extracts rendering from DirectX buffers that WPF uses internally, which is much faster than RenderTargetBitmap, but it seemed too unreliable for use on a production system
Update: it seems you don't need it in real time, so RenderTargetBitmap should work without problems.
source share