我正在尝试将摄像机录制内容写入网络流,请参阅以下代码段:
ParcelFileDescriptor fd = ParcelFileDescriptor.fromSocket(socket); this.camera.lock(); // this.camera refers to an android.hardware.Camera instance. this.camera.unlock(); this.mediaRecorder = new MediaRecorder(); this.mediaRecorder.setCamera(this.camera); this.mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); this.mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); this.mediaRecorder.setProfile(CamcorderProfile.get(0, CamcorderProfile.QUALITY_HIGH)); this.mediaRecorder.setOutputFile(fd.getFileDescriptor()); this.mediaRecorder.prepare(); this.mediaRecorder.start();
然后我试图在连接的另一端捕捉到它:与Socket.getInputStream()
我读的字节数,是的,字节进来字节.在实际写入在网络上.
但是当尝试使用FileOutputStream
类将其保存到文件中,并使用VLC打开文件时,它就无法读取.
我怎样才能最终使文件"可播放",这意味着它是一个有效的视频文件?
当我使用时this.mediaRecorder.setOutputFile("/sdcard/out.mp4");
,我可以在Android中打开视频文件,它将成功播放.但是,当我使用时this.mediaRecorder.setOutputFile(fd.getFileDescriptor());
,它不会.