由parcelFileDescriptor在android中的视频流

时间:2011-12-02 18:42:11

标签: java android video-streaming filestream

我成功通过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原子,但由于显而易见的原因,它必须将原子的大小留空。当写入可搜索的文件描述符时,它可以简单地填写记录后的空白,但当然套接字文件描述符是不可寻找的。所以收到的流必须在录制完成后修复,或者原始的视频/音频帧必须由服务器处理“。

我想要一个服务器(可能是Android手机或PC)的侧面代码。 如果还有其他方式请帮助我......

由于

1 个答案:

答案 0 :(得分:2)

为了从android或PC流式传输,您需要实现流传输的协议和服务器。有几个像HSL,RTPS等(更多http://en.wikipedia.org/wiki/Streaming_media)。这不是一个微不足道的问题,而且很少有来自android的成功流媒体服务。

您可以在此处查看如何在Android上实施和漫游服务:https://github.com/fyhertz/libstreaming

该库已针对Android 5破解,但适用于4.4.x