捕获多播视频

时间:2019-03-07 16:20:00

标签: c++builder indy10 c++builder-10.3-rio

我有一台服务器,该服务器使用VLC通过UDP将IP广播到IP 192.168.139.1 和端口 1234 ,并使用具有相同IP和端口5004的RTP。我可以在客户端PC上使用VLC来观看使用地址 udp://@192.168.139.1:1234 rtp://@192.168.139.1:5004投射的视频

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

以下是我到目前为止所做的摘要:

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的{​​{1}}属性将抱怨它不是有效的组地址。

这是我的问题:

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

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

0 个答案:

没有答案