Я пишу потоковую трансляцию с веб-камеры, используя ffmpeg и sdl на C.
моя платформа Linux.
мое приложение основано на клиентском сервере.
Клиент читает с веб-камеры, создает пакет AVPacket и отправляет его на сервер.
Моя проблема в том, что структура AVPacket имеет член с именем data, который составляет приблизительно 600 КБ.
Сначала я не проверял возвращаемое значение send (),
Поэтому, конечно, пакет не был отправлен полностью.
Но после того, как я проверил, send () возвращает ошибку Bad Address на второй итерации большого пакета.
длина пакета данных должна быть правильной, поскольку она предоставляется из структуры AVPacket.
Он отправляет 2 члена AVPacket раньше, поэтому сервер работает и работает.
Проблемный раздел:
int send_video_data(video_client_t *client, void* buf, int length)
{
int rc;
while (length > 0)
{
if ((rc = send(client->sockfd, buf, length, 0)) == -1) {
perror("failed sending data to server");
exit(1);
}
length-=rc;
buf+=rc;
}
return 0;
}
У кого-нибудь есть идеи, почему он не работает?
Спасибо заранее!