使用 AsterNET.ARI 我可以使用 ExternalMedia 公开来自星号的音频流。
场景:
Stasis
应用程序被调用ExternalMediaChannel
将流发送到 RTP
服务器
创建
IP
类型
7777
ARI 外部媒体频道
:bridge
星号
mixing
RTP 服务器
{"UNICASTRTP_LOCAL_PORT":"15672","UNICASTRTP_LOCAL_ADDRESS":"172.18.33.220"}
我实际上可以打印接收到的字节码,我知道这是音频,因为我已经将字节码保存到文件并成功播放了文件。
我如何接收和尝试发回流(RTP 服务器):Got RTP packet from 10.114.0.234:55874 (type 111, seq 031742, ts 3934092822, len 000069)
Sent RTP packet to 172.18.33.220:7777 (type 118, seq 029097, ts 1090576, len 000640)
Got RTP packet from 10.114.0.234:55874 (type 111, seq 031743, ts 3934093782, len 000071)
Sent RTP packet to 172.18.33.220:7777 (type 118, seq 029098, ts 1090896, len 000640)
RtpPacket
是一个Sending To: 172.18.33.220:15672
Received From: 172.18.33.220:15672
Sending To: 172.18.33.220:15672
Received From: 172.18.33.220:15672
类,表示 public class UDPListener
{
private const int ListenPort = 7777;
public static void StartListener()
{
UdpClient server = new UdpClient(ListenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, ListenPort);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
Console.WriteLine("Listening to: " + ListenPort);
while (true)
{
byte[] bytes = server.Receive(ref groupEP);
// PRINTS THE BYTE CODES
// Console.WriteLine($" {Encoding.ASCII.GetString(bytes, 0, bytes.Length)}");
RtpPacket rcvpacket;
bool parsedRCV = RtpPacket.TryParse(bytes, out rcvpacket);
if(parsedRCV){
Console.WriteLine($"Received From: {groupEP.Address}:{groupEP.Port}");
}
RtpPacket packet;
bool parsed = RtpPacket.TryParse(bytes, out packet);
if(parsed){
Console.WriteLine($"Sending To: {groupEP.Address}:{groupEP.Port}");
client.SendTo(packet.PayloadSegment, groupEP);
}
}
}
}
}
数据包的定义。
C#
知道为什么我听不到回流吗?只是在尝试做类似的事情时偶然发现了这个问题。 您设置成功了吗?