Androidとソケットプログラミングは初めてです。デバイスのカメラからPCにビデオをライブで転送するAndroidアプリケーションを作成したいと思います。最初に行うことはPreviewCallback引数から生のビデオデータを取得し、それをRTPパケットに変換します。これを行うためにJLibRTPを使用していました。パケットの転送に関しては、関連するクラスがいくつかあります:RtpPkt 、RtpSession、およびRtpSocket。
これが私の一見コードです:
DatagramSocket rtpSocket = new DatagramSocket();
DatagramSocket rtcpSocket = new new DatagramSocket();
RtpSession rtpSession = new RtpSession(rtpSocket, rtcpSocket);
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = Camera.open();
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
int height = 240;
try {
rtps.sendData(_data);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), e.toString(),
Toast.LENGTH_SHORT).show();
}
}
});
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
Log.d("CAMERA", e.getMessage());
}
}
私はまだアドレスとポート情報をどこに置く必要があるのか疑問に思っています。上記のコードは、マスターからの修正が必要であることを私は知っています。よろしくお願いします。
このライブラリにパケットをPCにストリーミングするものが含まれているかどうかはわかりませんが、含まれていない場合は、AndroidはRTPのみをサポートするため、問題があります。 =バージョン3.1以降のストリーミング(APIレベル12)。レベルが低い場合は、デバイスからPCにパケットをストリーミングできる独自の「rtp-server」を作成する必要があります。
詳細については、sipdroidプロジェクトをご覧ください。彼らは独自の「rtp-server」を作成しました: http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.Java =
更新:
もう1つの可能性は、ffmpegライブラリのffserverを使用することですが、Android用にライブラリをコンパイルする必要があります。これを行う方法とライブラリを操作する方法の小さなチュートリアルは次のとおりです。 Android用のFFmpegを構築する方法
UPDATE2:
spydroid application は、外部ライブラリなしでAndroidデバイスからビデオをストリーミングするための非常に良い例です。