当前位置:首页 > .NET > C#

C# 利用udp协议播音实现视频传输 C/S 服务端出错

优良自学吧提供C# 利用udp协议播音实现视频传输 C/S 服务端出错,C# 利用udp协议广播实现视频传输 C/S 服务端出错 UdpClient myUdpClient = new UdpClient();  IPEndPoint iep = new IPEnd

C# 利用udp协议广播实现视频传输 C/S 服务端出错
 UdpClient myUdpClient = new UdpClient();
 IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 8001); 
private void ProcessFrame(object sender, EventArgs arg)
        {
                
                Image<Bgr, Byte> frame = _capture.RetrieveBgrFrame();
                captureImageBox.Image = frame;
                MIplImage mi = frame.MIplImage;

                byte[] buffer = new byte[mi.imageSize];         //dwBufSize数据长度
                Marshal.Copy(mi.imageData, buffer, 0, mi.imageSize);     //pBuffer   IntPtr类
                myUdpClient.Send(buffer, buffer.Length, iep);
               
            if (recordstate)
            {
                videowriter.WriteFrame(frame);
            }
                Thread.Sleep(10);
        }
  做的是窗体程序,把采集的视频转换为字节发送出去,在客户端转为imagebox可显示的格式播放。
  上面是服务器udp广播核心代码,程序在运行到红色语句时出错,重新做了个例子用这个语句传输文本没有问题。传输视频却不行,请大家多多指点。
------解决思路----------------------
引用:
Quote: 引用:

你这里的buffer到底有多少字节……试试控制在1472字节以内呢

因为我是连续传输视频,视频Inptr类型转换为byte 存放在buffer里,所以不知道buffer有多少字节, 可以控制的吗


视频拍完,构造一个很小的字符串数组,进行send看是否有这个现象?
如果可以正常send,说明你拍摄视频就卡死了~
------解决思路----------------------
看来是你一次过把整张图片的数据Send了,UDP不好一次过发送太多数据,一般是1500字节,超过了最好拆分发送,需要另外实现拆组包过程
------解决思路----------------------
另外,如果真的是发送数据包太大,.net会给你报异常,你是可以调试出来具体的异常抛出的(而不是像c程序debug那样靠猜的)。先搞准了原因再说。

(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢