Я изменил исходный код live555, где находится функция sendto.rtp multicast терпит неудачу на win7, но успех на Ubuntu, с live555 изменен
Я добавляю многоадресную рассылку после функции sendto.
int bytesSent = sendto(socket, (char*)buffer, bufferSize, 0, (struct sockaddr*)&dest, sizeof dest);
//zhouhua add below
if(zhou_init == 0){
zhou_init = 1;
memset(&mcast_addr,0,sizeof(mcast_addr));
mcast_addr.sin_family = AF_INET;
mcast_addr.sin_addr.s_addr = inet_addr("224.0.0.251");
mcast_addr.sin_port = htons(5004);
}
int k = sendto(socket, (char*)buffer, bufferSize,0,(struct sockaddr*)&mcast_addr, sizeof(mcast_addr));
printf("k = %d\n", k);
//zhou end
Это работает, когда я играю в поток rtsp. Когда я воспроизвожу файл sdp, он воспроизводит многоадресное видео.
Но, на win7, я не могу получить никакого ответа с помощью vlc-плеера.
В то время как wirehark получает одни и те же данные многоадресной передачи на win7 и ubuntu.
Почему это не работает на win7?
Где мой код? – zed
просто загрузите его с http://live555.com/liveMedia/public/, а код ключа выглядит так: – Zhou
'code'int bytesSent = sendto (socket, (char *) buffer, bufferSize, 0, (struct sockaddr *) & dest, sizeof dest); // zhouhua добавить ниже if (zhou_init == 0) { zhou_init = 1; memset (& mcast_addr, 0, sizeof (mcast_addr)); mcast_addr.sin_family = AF_INET; mcast_addr.sin_addr.s_addr = inet_addr ("224.0.0.251"); mcast_addr.sin_port = htons (5004); int k = sendto (socket, (char *) buffer, bufferSize, 0, (struct sockaddr *) & mcast_addr, sizeof (mcast_addr)); printf ("k =% d \ n", k); // zhou end «code' @ zed – Zhou