我成功地通过媒体录像机在SD卡上录制了视频,但我想将此视频发送到服务器,而不写入SD卡。我搜索它,我发现parcelFileDescriptor是发送视频到TCP socket的方式,但我不知道如何在服务器端接收它,请解释一下。下面是我的客户端代码
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原子存储编码的视频和音频的实际原始帧。在纸杯蛋糕版本中,Android开始使用编码的帧写出一个mdat原子,但由于显而易见的原因,它必须将原子的大小留空。当写入可查找的文件描述符时,它可以简单地填充记录后的空白,但套接字文件描述符当然是不可查找的。因此,接收到的流必须在录制完成后进行修复,或者原始视频/音频帧必须由服务器处理。
我想要一个服务器(可能是Android手机或PC)端代码。如果有别的办法,请帮帮我......
谢谢
发布于 2014-12-02 13:29:24
为了从android或pc进行流媒体传输,您需要实现流媒体传输和服务器的协议。它们中有几个像HSL,RTPS等(更多的http://en.wikipedia.org/wiki/Streaming_media)。这不是一个微不足道的问题,android上成功的流媒体服务屈指可数。
你可以在这里查看如何在安卓上实现和流媒体服务:https://github.com/fyhertz/libstreaming
这个库在Android5上被破坏了,但在4.4.x上可以工作
https://stackoverflow.com/questions/8361031
复制相似问题