DxPackNet 5.视频高质量的压缩和传输
发布时间:2020-12-16 08:58:52 所属栏目:asp.Net 来源:网络整理
导读:DxPackNet 对视频的压缩和解压也提供了很好的支持,且系统不需要装第三方解码器哦~ 主要用到了?IxVideoEncoder 视频编码器 ?和?IxVideoDecoder 两个接口 ?这里只做简单的组件功能使用介绍,实际应用中可能涉及到 UDP分包,包顺序控制, 音视频传输协议制定,
DxPackNet 对视频的压缩和解压也提供了很好的支持,且系统不需要装第三方解码器哦~ 主要用到了?IxVideoEncoder 视频编码器 ?和?IxVideoDecoder 两个接口 ?这里只做简单的组件功能使用介绍,实际应用中可能涉及到 UDP分包,包顺序控制, 音视频传输协议制定, P2P,这就不在本文的讨论范围 private void Form1_Load(object sender,EventArgs e) { server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); server.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),38000));//绑定端口号 threadRecv = new Thread( ThreadStart(ReviceMsg)); threadRecv.Start(); client = 38000); 初始化视频编码环境 IxVideoCoderEnv Env = DxFactory.CreateDxCompent<IxVideoCoderEnv>(); Env.Init(); 创建编码器 encoder = DxFactory.CreateDxCompent<IxVideoEncoder>(); encoder.Quant = 30;视频质量 0~31 之间的数字 越小画质越好, 越大越流畅 创建解码器 decoder = DxFactory.CreateDxCompent<IxVideoDecoder>(); cameras = DxFactory.CreateDxCompent<DxDeviceCollection>(DxDeviceCollection.ENVIRONMENT_CAMERAS); camCapture = DxFactory.CreateDxCompent<IDxCameraCapture>(this,panel1); camCapture.FrameCb = camerasFrameCb; camCapture.Init(cameras[0]); } byte[] outBuffer = new byte[1024 * 2];2M byte[] imgBuffer = private void camerasFrameCb(byte[] buffer,int size) { Array.Clear(outBuffer,压缩视频流 int outSz = encoder.Encode(buffer,size,outBuffer); client.SendTo(outBuffer,outSz,SocketFlags.None,svpoint);客户端发送压缩后的视频流 } void ReviceMsg() 服务端接收视频流后解压显示 { byte[] bufferRecv=2];////2M while (!bExit) { if (server.Poll(); 接收压缩流 int revLen = server.ReceiveFrom(bufferRecv,1)">ref clpoint1); reviceSize += revLen; Array.Clear(imgBuffer,imgBuffer.Length); 解压缩视频流 decoder.Decode(bufferRecv,revLen,imgBuffer); this.BeginInvoke(new camerasFrameCbHandler(_camerasFrameCb),imgBuffer,1)">640 * 480 * 3); } } } delegate void camerasFrameCbHandler( size); public void _camerasFrameCb( size) { 将视频流转换为帧图片 Bitmap bmp = camCapture.BmpFromBuffer(buffer,size); if (bmp != null) { Image oimg = pictureBox1.Image; pictureBox1.Image = bmp; if (oimg != ) oimg.Dispose(); } } ?效果图: 最后附上demo?VideoTransferDemo.zip?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 强制按钮控制在回发之前运行其客户端
- asp.net – 开发与生产:连接字符串
- 禁用默认按钮或输入密码在asp.net c#
- asp.net – Visual Studio源代码控制/版本控制,Vault与Git(
- asp.net – 在实体框架中使用PersianCalendar作为表列的正确
- asp.net – 禁用Internet Explorer 8开发人员工具
- asp.net – 如何在.net中读取Elastic Beanstalk环境属性?
- “DataSource和DataSourceID都被定义为”使用ASP.NET GridV
- asp.net 文件下载功能函数代码整理
- asp.net – 如何禁用.NET事件日志警告?
推荐文章
站长推荐
- asp.net – 使用Web服务导致“无法处理没有有效操
- 在ASP.NET Web Forms 4.5中捆绑JQuery
- 如何在ASP.NET中使用log4net在日志文件中包含Ses
- asp.net-mvc – DefaultModelBinder不绑定嵌套模
- asp.net-mvc – 集成测试ASP.NET MVC应用程序
- asp.net – 如何单元测试使用HostingEnvironment
- asp.net – 让wmd-editor不发布html?
- ASP.NET:代码落后或没有代码落后?
- asp.net-mvc – SessionSecurityTokenHandler尝试
- 一个关于ConfigurationManager.GetSecion方法的小
热点阅读