我成功地通过Mediarecorder将视频录制在SD卡上,但我想在不写入SD卡的情况下将这个视频发送到服务器。我搜索了相关信息,发现parcelFileDescriptor是将视频发送到TCP套接字的方法,但我不知道如何在服务器端接收它,请解释一下。这是我的客户端代码:
socket = new Socket("hostname", portnumber);
ParcelFileDescriptor pfd =ParcelFileDescriptor.fromSocket(socket);
recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mPreview = new Preview(VideoRecorder.this,recorder);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(mPreview);
我希望在服务器端接收并播放它,以创建实时视频传输。需要知道的是,“MediaRecorder”可以记录3GPP或MP4格式。该文件格式由原子组成,其中每个原子都以其大小开头。文件中有不同类型的原子,mdat原子存储编码视频和音频的实际原始帧。在Cupcake版本中,Android开始写入具有编码帧的mdat原子,但由于明显的原因,必须将原子的大小留空。当写入可寻址文件描述符时,可以在录制后简单地填补空白,但是套接字文件描述符当然是不可寻址的。因此,在录制完成后,必须修复接收到的流,或者服务器必须处理原始视频/音频帧。我想要一个服务器端代码(可能是Android手机或PC)。如果有其他方法,请帮忙提供......谢谢。