最近我在做一个使用UDP传输视频图像的软件
首先获取视频图像,打入流每次读取512字节大小的字节数组然后发送。。
这样while()直到读完发送完毕这期间我发现了一个问题
在我发送视频图像期间由于我还跟我朋友QQ语音着。。
发现每次传送期间居然语音卡的都不出声音了这是为什么???? 我每次才发送512字节也就是0.5KB的数据
我的带宽是1M (140KB/S)为什么会网络卡成这样???
难道网卡堆积数据到了140K再发送??请高人解释下
谢谢了以下是我的代码片段:
byte[] Temp_Data = new byte[512];
using (MemoryStream MS = new MemoryStream())
{
//将图像保存在流中
this.VideoData.Save(MS, ImageFormat.Bmp);
//重定向流
MS.Position = 0; //从现在开始备份该次封包所有数据
TYPE_BACKUP_UserVideoData TBUV = new TYPE_BACKUP_UserVideoData();
//打入当前封包Id
TBUV.Package_Id = this.PackageId; //发送视频开始标记
Order = OrderInfo.ORDER_BEGIN_VIDEO + Globle_Config.SUS.Username +
OrderInfo.ORDER_CENTER_SPLIT +
MS.Length + OrderInfo.ORDER_CENTER_SPLIT +
(((int) MS.Length/3072) + 1).ToString() + OrderInfo.ORDER_CENTER_SPLIT +
this.PackageId.ToString() + OrderInfo.ORDER_CENTER_SPLIT + OrderInfo.ORDER_END; this.Order = Order;
this.Sleep = 1;
foreach (var UserA in UserAttr)
{
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
//记录这次封包的用户标示
TBUV.Package_User = this.Username;
this.SendData();
//开始分块发送,只要能读出数据则发出去
while ((Length = MS.Read(Temp_Data, 0, Temp_Data.Length)) > 0)
{
//拼接分块命令
Order = OrderInfo.ORDER_GOON_VIDEO + Globle_Config.SUS.Username +
OrderInfo.ORDER_CENTER_SPLIT +
Convert.ToBase64String(Temp_Data, 0, Temp_Data.Length) +
OrderInfo.ORDER_CENTER_SPLIT +
Package_Id + OrderInfo.ORDER_CENTER_SPLIT + this.PackageId.ToString() +
OrderInfo.ORDER_CENTER_SPLIT + OrderInfo.ORDER_END; //开始记录此次封包的封包片数据
TYPE_BACKUP_VideoPackageData TBVPK = new TYPE_BACKUP_VideoPackageData();
//打入这次封包片数据
TBVPK.Package_Key = Package_Id;
//打入这次封包片编号
TBVPK.Package_Data = Temp_Data;
//将这次封包片打入该封包集合中
TBUV.VideoUserDataCollection.Add(TBVPK); //封包片ID标记自身累加
Package_Id++;
//发送出去
this.Order = Order;
this.Sleep = 1;
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
this.SendData();
}
//发送完毕后开始发送 视频结尾标记
Order = OrderInfo.ORDER_END_VIDEO + Globle_Config.SUS.Username;
this.Order = Order;
this.Sleep = 1;
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
this.SendData();
//记录此次封包到全局备份视频封包集合中
Globle_Config.Backup_UserVideoDataCollection.Add(TBUV);
//累加当前封包数量
this.PackageId++;-----------------------请帮忙找到解决方法,令当高分送上--------------------------
首先获取视频图像,打入流每次读取512字节大小的字节数组然后发送。。
这样while()直到读完发送完毕这期间我发现了一个问题
在我发送视频图像期间由于我还跟我朋友QQ语音着。。
发现每次传送期间居然语音卡的都不出声音了这是为什么???? 我每次才发送512字节也就是0.5KB的数据
我的带宽是1M (140KB/S)为什么会网络卡成这样???
难道网卡堆积数据到了140K再发送??请高人解释下
谢谢了以下是我的代码片段:
byte[] Temp_Data = new byte[512];
using (MemoryStream MS = new MemoryStream())
{
//将图像保存在流中
this.VideoData.Save(MS, ImageFormat.Bmp);
//重定向流
MS.Position = 0; //从现在开始备份该次封包所有数据
TYPE_BACKUP_UserVideoData TBUV = new TYPE_BACKUP_UserVideoData();
//打入当前封包Id
TBUV.Package_Id = this.PackageId; //发送视频开始标记
Order = OrderInfo.ORDER_BEGIN_VIDEO + Globle_Config.SUS.Username +
OrderInfo.ORDER_CENTER_SPLIT +
MS.Length + OrderInfo.ORDER_CENTER_SPLIT +
(((int) MS.Length/3072) + 1).ToString() + OrderInfo.ORDER_CENTER_SPLIT +
this.PackageId.ToString() + OrderInfo.ORDER_CENTER_SPLIT + OrderInfo.ORDER_END; this.Order = Order;
this.Sleep = 1;
foreach (var UserA in UserAttr)
{
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
//记录这次封包的用户标示
TBUV.Package_User = this.Username;
this.SendData();
//开始分块发送,只要能读出数据则发出去
while ((Length = MS.Read(Temp_Data, 0, Temp_Data.Length)) > 0)
{
//拼接分块命令
Order = OrderInfo.ORDER_GOON_VIDEO + Globle_Config.SUS.Username +
OrderInfo.ORDER_CENTER_SPLIT +
Convert.ToBase64String(Temp_Data, 0, Temp_Data.Length) +
OrderInfo.ORDER_CENTER_SPLIT +
Package_Id + OrderInfo.ORDER_CENTER_SPLIT + this.PackageId.ToString() +
OrderInfo.ORDER_CENTER_SPLIT + OrderInfo.ORDER_END; //开始记录此次封包的封包片数据
TYPE_BACKUP_VideoPackageData TBVPK = new TYPE_BACKUP_VideoPackageData();
//打入这次封包片数据
TBVPK.Package_Key = Package_Id;
//打入这次封包片编号
TBVPK.Package_Data = Temp_Data;
//将这次封包片打入该封包集合中
TBUV.VideoUserDataCollection.Add(TBVPK); //封包片ID标记自身累加
Package_Id++;
//发送出去
this.Order = Order;
this.Sleep = 1;
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
this.SendData();
}
//发送完毕后开始发送 视频结尾标记
Order = OrderInfo.ORDER_END_VIDEO + Globle_Config.SUS.Username;
this.Order = Order;
this.Sleep = 1;
this.UserEndPoint = UserA.VideoCustomer_IPEndPoint;
this.SendData();
//记录此次封包到全局备份视频封包集合中
Globle_Config.Backup_UserVideoDataCollection.Add(TBUV);
//累加当前封包数量
this.PackageId++;-----------------------请帮忙找到解决方法,令当高分送上--------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货