2015-08-24 2 views
0

Я изменил исходный код 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?

+0

Где мой код? – zed

+0

просто загрузите его с http://live555.com/liveMedia/public/, а код ключа выглядит так: – Zhou

+0

'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

ответ

0

Я нашел это. Мне нужно изменить файл sdp. параметр IP должен записывать int в конец файла.