C# Bitmap与H264编解码
using System; using System.Drawing; using System.Drawing.Imaging; namespace H264Demo { internal class Program { static void Main(string[] args) { var bitmap = new Bitmap("test.jpg"); string DllName = "openh264-2.5.1-win32.dll"; var encoder = new OpenH264Lib.Encoder(DllName); var decoder = new OpenH264Lib.Decoder(DllName); OpenH264Lib.Encoder.OnEncodeCallback onEncode = (data, length, frameType) => { var keyFrame = (frameType == OpenH264Lib.Encoder.FrameType.IDR) || (frameType == OpenH264Lib.Encoder.FrameType.I); Console.WriteLine("Encord {0} bytes, KeyFrame:{1}", length, keyFrame); // decode it to Bitmap again... var temp = decoder.Decode(data, length); if (temp != null) { Console.WriteLine(temp.Size); temp.Save($"temp_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.jpg", ImageFormat.Jpeg); temp.Dispose(); } }; // setup encoder float fps = 25.0f; int bps = 5000 * 1000; // target bitrate. 5Mbps. float keyFrameInterval = 1.0f; // insert key frame interval. unit is second. encoder.Setup(1920, 1080, bps, fps, keyFrameInterval, onEncode); for (int i = 0; i < 2; i++)// 至少两张图 { encoder.Encode(bitmap); } //bitmap.Dispose(); Console.ReadLine(); } } }
qq:505645074

浙公网安备 33010602011771号