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;
}
いずれかが、それは働いていない理由を任意のアイデアを得ましたか。
ありがとうございました!