【发布时间】:2011-12-02 18:42:11
【问题描述】:
我成功通过 SD 卡上的 Mediarecorder 录制视频 但我想将此视频发送到服务器而不写入 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 atom,但它必须将 atom 的大小留空,原因很明显。当写入可搜索的文件描述符时,它可以在记录后简单地填充空白,但当然套接字文件描述符是不可搜索的。所以接收到的流必须在录制完成后修复,或者必须由服务器处理原始视频/音频帧。
我想要一个服务器端代码(可能是 Android 手机或 PC)。 如果有其他方法请帮助我......
谢谢
【问题讨论】:
标签: java android video-streaming filestream