私は、2 つの Android フォン間でライブ ビデオ ストリーミングの Android アプリケーションを作成しています。これらのデバイス間のソケット接続は既に確立しています。あるデバイスでビデオをキャプチャし、ストリームを他のデバイスに送信していますが、現在は受信側のモバイル デバイスに保存して保存したいだけです。私は1つのデバイスで使用して記録しているので、データを設定してオブジェクトMediaRecorder
を使用しているレシーバーにストリーミングしますparcelfiledescriptor
クライアント側のコード
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
受信側コード
pfd= ParcelFileDescriptor.fromSocket(s);
InputStream in = new FileInputStream(pfd.getFileDescriptor());
DataInputStream clientData = new DataInputStream(in);
OutputStream newDatabase = new FileOutputStream(file);
int available=in.available();
byte[] buffer = new byte[available];
int length;
while((length = in.read(buffer)) > 0)
{
newDatabase.write(buffer, 0, length);
}
newDatabase.close();
ビデオ ファイルは受信側のモバイルで作成されていますが、バイトを受信できません。送信されたビデオストリームは記録中にエンコードされるため、受信側で次のストリームをデコードする必要がありますか。では、受信したストリームをデコードするにはどうすればよいですか? MediaExtractor や MediaCodec などのソリューションを見つけました...しかし、これはライブ ビデオ キャプチャで機能しますか?さらに、バージョン 2.3.6android version 2.3.6 GingerBread
からビデオ ストリームをデコードすることMediaCodec
は可能ですか、または他の方法が利用可能ですか?