Android:将Mediarecorder-Stream保存为可播放文件

时间:2013-08-24 13:08:53

标签: android video stream mediarecorder android-4.3-jelly-bean

我想用我的Android设备(Nexus 10)录制视频,然后将其上传到youtube。

到目前为止,我正在使用android MediaRecoder录制并通过LocalSocket流式传输以将数据保存到多个文件中。但这些文件无法播放。

我阅读了一些文章API-Level 18,可以使用MediaCodec和/或MediaMuxer转换文件。我发现了这个this代码,但我真的不明白如何处理它。

有没有人举一个简单的例子来说明如何将原始数据从LocalSocket转换为可播放的文件(即mp4文件)?

我的MediaRecoder看起来像这样:

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
camcorderProfile_HQ.fileFormat = MediaRecorder.OutputFormat.MPEG_4;
camcorderProfile_HQ.videoCodec = MediaRecorder.VideoEncoder.MPEG_4_SP;
recorder.setProfile(camcorderProfile_HQ);
recorder.setPreviewDisplay(surfaceHolder.getSurface());
clientSocket = new LocalSocket();
clientSocket.connect(new LocalSocketAddress(SOCKET_ADDRESS));
recorder.setOutputFile(clientSocket.getFileDescriptor());
recorder.prepare();
recorder.start();

提前致谢。

1 个答案:

答案 0 :(得分:1)

我认为你不能那样做。写入mp4多路复用文件需要文件描述符可搜索。 Unix套接字不是。这可能是因为muxing到mp4通常需要多路复用器来回寻找索引等......并且这不能在本地套接字上完成。

如果你不能简单地输出到文件然后复制它,这对你来说可能非常有趣:http://hello-qd.blogspot.it/2013/05/how-to-process-mediarecorder-frames.html