privatevoidScreenTest() { _isStart = true; var encoder = new OpenH264Lib.Encoder("openh264-2.3.1-win32.dll"); var decoder = new OpenH264Lib.Decoder("openh264-2.3.1-win32.dll");
// setup encoder float fps = 10.0f; int bps = 5000 * 1000; // target bitrate. 5Mbps. float keyFrameInterval = 2.0f; // insert key frame interval. unit is second. encoder.Setup ( 1920, 1080, bps, fps, keyFrameInterval, ( data, length, frameType ) => { // called when each frame encoded. Console.WriteLine ( @"Encord {0} bytes, frameType:{1}", length, frameType );
// decode it to Bitmap again... if (_isStart) { Dispatcher.Invoke ( () => { var bmp = decoder.Decode(data, length); if (bmp != null) { Console.WriteLine(bmp.Size); var bitmapImage = ZImageUtils.Bitmap2BitmapImage(bmp); MImg.Source = bitmapImage; bmp.Dispose(); } } ); } } ); new Thread ( () => { while (_isStart) { var screen = ZScreenUtils.GetScreen(); encoder.Encode(screen); screen.Dispose(); Thread.Sleep(1000 / 10); } } ).Start(); } } }