110,588
社区成员
发帖
与我相关
我的任务
分享
//Send方法内的发送部分改成:
int packetSize = m_pRTP_Stream.Session.MTU - 12;
while (data.Length > 0)
{
RTP_Packet rtpPacket = new RTP_Packet();
rtpPacket.Timestamp = m_RtpTimeStamp;
rtpPacket.Data = data.Take(packetSize).ToArray();
rtpPacket.IsMarker = data.Length <= packetSize; // is last packet in the frame
m_pRTP_Stream.Send(rtpPacket);
data = data.Skip(packetSize).ToArray();
}
接收部分:MainWindowViewModel.cs/m_RtpImageSession_NewReceiveStream方法:
// 在方法体外定义一个成员变量:
// List<byte> _buffer = new List<byte>();
// m_RtpImageSession_NewReceiveStream方法内的循环改成:
this.m_RtpImageReceive.PacketReceived += (send, ep) =>
{
_buffer.AddRange(ep.Packet.Data);
if (ep.Packet.IsMarker)
{
var data = _buffer.ToArray();
_buffer.Clear();
this.CaptrueDeskSource = Z.Core.Helper.Media.ConvertByteArrayToImageSource(data);
}
};