私はnet7mmaの作者です。
これを解決するためにあなたの助けに本当に感謝します。
WinSockまたはWindowsネットワークスタックの別の部分にバグがある可能性があります。これがMonoAlsoで起こるかどうか聞いてみたいです。
ただし、OPとの会話に基づいて、これが発生しているように見える理由は、Freeboxがdescribe要求で示されているものと同じではないポートでパケットを送信しているためです。
プロジェクトページで機会があれば、これについて少し情報を投稿しますが、それまでの間、これについて検索している人々とFreeboxが可能な限り最高の情報を入手できるようにしたいと思いました。
のRtpClient -> RecieveData
変化 :
received = socket.Receive(m_Buffer, received, Math.Min(socket.Available, m_Buffer.Length), SocketFlags.None, out error);
に
var tc = GetContextBySocketHandle(socket.Handle);
EndPoint fbRtp = new IPEndPoint(tc.RemoteRtp.Address, 0);//Any port
received = socket.ReceiveFrom(m_Buffer, SocketFlags.None, ref fbRtp);
これにより、stbがrtpまたはrtcpポートを正しく報告しないため、ソケットが任意のポートで受信できるようになります。クライアントが複数あり、このコードを使用する場合は、別のストリームから意図せずにパケットを受信する可能性があるため、注意してください。単一のクライアントを使用している場合でも、同じストリームのRtcpポートが、この受信で意図せずにパケットを盗み込む可能性があります。
これが機能する場合の最善のアクションは、RtspClientとRtpClientから派生し、これを適切に処理できるFreeboxRtspClientとFreeboxRtpClientを作成することです。
ボックスが別のポートでパケットを送信している理由の韻を誰かが見つけることができれば、現在の実装に変更を加えて、派生する必要がないことをうれしく思います。
ここに添付:http://net7mma.codeplex.com/workitem/16024
会話全体を示すPcapキャプチャを見つけることができます。
-ジェイ