Проблема в создании соединения UDP на VLC с помощью программирования сокетов - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь записать приемник и передатчик UDP на C, используя API сокетов для отправки видео с одного компьютера и воспроизведения его на другом с помощью VLC.

Я хочу открыть потоковое соединение насторона отправителя на VLC и получать эти данные с помощью сокетов. После этого я хочу заполнить общий буфер этими данными, чтобы их можно было прочитать на стороне получателя. Впоследствии эти данные могут быть отправлены в VLC для воспроизведения на стороне получателя, снова открыв сокет. Я написал некоторый код передатчика UDP.

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdint.h>

int fd, n, i;
uint8_t shared_buffer[1600];

if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
    LOG_E(UDP_, "Failed to create socket on PDSCH server side\n");
    return 1;
}

struct sockaddr_in pdsch_server_addr;
memset(&pdsch_server_addr, 0, sizeof(pdsch_client_addr));
pdsch_server_addr.sin_family = AF_INET;
pdsch_server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
pdsch_server_addr.sin_port = htons(1234);

if (bind(fd, (struct sockaddr *)&pdsch_server_addr, sizeof(pdsch_server_addr)) < 0) {
    LOG_E(UDP_, "Failed to bind to socket descriptor %d", fd);
    return 1;
}

 unsigned char temp_buffer[1600];
 int buf_len = 1500;

 n = recvfrom(fd, temp_buffer, buf_len, MSG_WAITALL, (struct sockaddr *)&pdsch_server_addr, sizeof(pdsch_server_addr)); 


 printf("First 10 bytes received are: ");
 for (i = 0; i < 10; i++)
      printf("%x ", temp_buffer[i]);
 printf("\n");

 temp_buffer[n] = '\0';
 for(i = 0; i < 1500; i++) {
      shared_buffer[i] = temp_buffer[i];
 }

Это жизнеспособный способ отправки видеоданных с использованием сокетов и общего буфера между отправителем и получателем? Любая помощь будет оценена.

...