Захват многоадресного видео - PullRequest
0 голосов
/ 07 марта 2019

У меня есть сервер, который использует VLC для многоадресной передачи видео с использованием UDP на IP 192.168.139.1 и порта 1234 и использует RTP с тем же IP-адресом и портом 5004. Я могуиспользуйте VLC на клиентском ПК, чтобы просмотреть видео, которое транслируется по адресу udp: //@192.168.139.1: 1234 или rtp: //@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 свойство TIdIPMCastClient будет жаловаться, что это недопустимый групповой адрес.

Итак, вот мои вопросы:

  1. Чтоправильный способ прослушивания и захвата потока данных UDP?

  2. Может ли TIdIPMCastClient также захватывать данные RTP?Если да, я должен сделать что-то особенное для этого?Если нет, это другой компонент, который я могу использовать для этого?

...