プロのビデオカメラが UDP と RTP 経由でパケットを送信してきました。パケットには、YUV422 ピクセル形式 (RFC 2435) の MJPG データが含まれています。DatagramSocket および DatagramPacket クラスを使用することで、パケットを受信できます。今、私は次から取得する効率的な方法を探しています:
約 80 * RTP_socket.receive(rtpPacket) ---> ハードディスクに 1 つの jpg ファイル (25 fps)
そうしないと、UDP 標準によれば、パケットはカメラによって継続的に送信されるため、比較的多くのパケットがすぐに失われます (すべてのフレームが必要ないため、たまにパッケージを失うことは最悪ではありません)。
現在、1 フレームの最終パケットを取得するまで、ByteBuffer を使用してパケットを順番に格納しています (ヘッダーは put (.. int offset...) を使用して切り取られています)。
しかし残念ながら、必要な jpg-Header を取得するには ImageIO.write 関数を使用する必要があるようですよね?ByteBuffer を直接処理できないため...
別のスレッド (まだ実装されていません) で画像の後処理を行う場合、DirectByteBuffer は意味がありますか?
私が求めていることを理解していただければ幸いです:)。そうでない場合は、お気軽にお尋ねください
どうもありがとう