18

私は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());
    }
}

アドレスとポート情報をどこに置く必要があるのか​​ 、まだ疑問に思っています。上記のコードは、マスターからの修正がまだ必要であることを知っています。前もってありがとう..

4

1 に答える 1

5

このライブラリにパケットをPCにストリーミングするものが含まれているかどうかはわかりませんが、含まれていない場合は問題が発生します。Androidはバージョン3.1(APIレベル12)以降のRTPストリーミングのみをサポートしているためです。レベルが低い場合は、デバイスからPCにパケットをストリーミングできる独自の「rtp-server」を作成する必要があります。

詳細については、sipdroidプロジェクトをご覧ください。彼らは独自の「rtp-server」を作成しました:http ://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java

アップデート:

別の可能性は、ffmpegライブラリからffserverを使用することですが、したがって、Android用にライブラリをコンパイルする必要があります。これを行う方法とライブラリを操作する方法の小さなチュートリアルがあります:Android用のFFmpegを構築する方法

UPDATE2:

spydroidアプリケーションは、外部ライブラリなしでAndroidデバイスからビデオをストリーミングするための非常に良い例です。

于 2011-09-07T11:33:57.930 に答える