2012-03-29 52 views
0

IM在C.
书写使用的ffmpeg和SDL现场摄像头流我的平台是Linux。发送大数据包获取错误地址错误

我的应用程序是基于客户端服务器的。
客户端正在从网络摄像头读取数据,生成一个AVPacket,然后发送到服务器。

我的问题是,该AVPacket结构有一个成员命名的数据,大约是60万。
起初,我没有检查的send()的返回值,
所以,当然包未能完全发送。

但我检查后,在send()在大包的第二次迭代将返回错误地址错误。
数据包的长度必须正确,因为它是由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; 

    } 

任何一个得到了,为什么它不工作的任何想法?
感谢先进!

回答

0

好吧,我想通了。
问题出在AVPacket上。

不知何故,大小是不正确的(maby beacuse video for linux)
所以我解码数据包并重新编码它,它现在正在工作。