Захват многоадресного видео
У меня есть сервер, который использует 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
будет жаловаться, что это не правильный групповой адрес.
Итак, вот мои вопросы:
Как правильно прослушивать и перехватывать поток данных UDP?
Можно
TIdIPMCastClient
также захватить данные RTP? Если да, я должен сделать что-то особенное для этого? Если нет, это другой компонент, который я могу использовать для этого?