2012-03-29 12 views
0

ffmpegとsdlを使用してライブWebcamストリームを作成しています。
私のプラットフォームはLinuxです。大きなパケットを送信すると不正なアドレスエラーが発生する

私のアプリケーションは、クライアントサーバーベースです。
クライアントがWebカメラから読み取り、AVPacketを生成してからサーバーに送信しています。

私の問題は、AVPacket構造体に約600kのdataという名前のメンバーがあることです。
最初に、私はsend()戻り値をチェックしていませんでした。
もちろん、パケットは完全に送信できませんでした。

しかし、私がチェックした後、大きなパケットの2番目の反復でsend()がBad Addressエラーを返します。
AVPacket構造体から供給されるため、データパケットの長さが正しくなければなりません。

これはAVPacketの2つのメンバーを先に送信するので、サーバーは稼動しており、機能しています。

問題セクション:

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にありました。

何とか、サイズは(Linux用のビデオbeacuse maby)正しくありませんでした
だから私は、パケットをデコードし、それを再び戻ってエンコードし、それが今取り組んでいます。

関連する問題