Отправка больших пакетов получает ошибку неверного адреса - PullRequest
0 голосов
/ 29 марта 2012

Я пишу потоковую трансляцию с веб-камеры, используя 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;

    }

У кого-нибудь есть идеи, почему он не работает?
Спасибо заранее!

1 Ответ

0 голосов
/ 30 марта 2012

Хорошо, я понял это.
Проблема была с AVPacket.

как-то, размер был не правильный (видео Мейби из-за Linux) Поэтому я декодирую пакет и снова кодирую его, и он работает сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...