0

我有一个服务器,它使用 VLC 使用 UDP 将视频多播到 IP 192.168.139.1和端口1234,并使用具有相同 IP 和端口 5004 的 RTP。我可以在客户端 PC 上使用 VLC 来查看正在使用的视频地址udp://@192.168.139.1:1234rtp://@192.168.139.1:5004

我的任务是编写一个可以捕获此视频并将其保存到文件的应用程序。为此,我尝试TIdIPMCastClient在 C++ Builder 10.3 中使用。

这是我到目前为止所做的一个片段:

void __fastcall TForm1::Start(TObject* Sender)
{
    FOutFile = new TFileStream(Edit3->Text, fmCreate | fmShareDenyWrite);   
    MCastClient->MulticastGroup = Edit1->Text; // 192.168.139.1 
    MCastClient->DefaultPort = Edit2->Text.ToIntDef(1234); // 1234
    MCastClient->Active = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MCastClientIPMCastRead(TObject *Sender, const TIdBytes AData, TIdSocketHandle *ABinding)
{
    if((nullptr != FOutFile) && (0 < AData.Length))
    {
        FOutFile->Write((void*)&AData, AData.Length);
        StatusBar1->SimpleText = IntToStr(AData.Length);
    }
}

但是将192.168.139.1分配给MulticastGroup属性 ofTIdIPMCastClient会抱怨它不是有效的组地址。

所以这是我的问题:

  1. 侦听和捕获UDP数据流的正确方法是什么?

  2. 还可以TIdIPMCastClient捕获RTP数据吗?如果是,我是否需要为此做任何特别的事情?如果不是,我可以使用另一个组件吗?

4

0 回答 0