私の目標は、コンピューターに USB Web カメラから自分の Android アプリにビデオをストリーミングさせることです。
PC では、次の設定でポート 8554 の RTSP 経由でキャプチャ デバイス (ウェブカメラ) をストリーミングする VLC を実行しています。
Video Codec: H.264
Video Resolution: 1600x1200 x 0.25= 400 x 300 px
Video Frame Rate: 12 fps
Video Bitrate: 56 Kbps
and NO audio
ラグが改善されるかどうかを確認するために非常に低い設定を選択しましたが、ラグにはほとんどまたはまったく影響しませんでした. これは、生成された出力ストリーム文字列です。VLC は次のように表示します。
:sout=#transcode{vcodec=h264,vb=56,fps=12,scale=0.25,acodec=none}:rtp{sdp=rtsp://:8554/} :sout-keep
私が持っている onCreate メソッドの Android 側:
String url = "rtsp://192.168.1.103:8554/";
vid = (VideoView) findViewById(R.id.videoView1);
mc = new MediaController(this);
vid.setMediaController(mc);
vid.setVideoURI(Uri.parse(url));
vid.requestFocus();
vid.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
vid.start();
}
});
結果:
アプリがロードされると、LogCat に 2 つのメッセージがポップアップ表示される間、VideoView は約 10 ~ 20 秒間すべて黒くなります。
Tag Text
MediaPlayer Couldn't open file on client side, trying server side
MediaPlayer getMetadata
ビデオが表示されると、約 20 秒のラグがあり、約 30 ~ 60 秒後にビデオがフリーズしたままになります。ビデオの再生が開始されると、次のメッセージも表示されます。
Tag Text
MediaPlayer info/warning (3, 0)
MediaPlayer Info (3, 0)
また、VLC を使用して同じネットワーク上の別の PC からストリームをキャプチャしようとしましたが、ラグがまだ残っているようですが、フリーズすることはありません。Darwin などの別の RTSP サーバーを使用する必要があるかどうかわかりませんか? 別のプロトコル、HTTP または RTP を使用しますか? または、アンドロイド側で何かを変更する必要がある場合は?