2

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

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

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

有没有人展示如何将原始数据从 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();

提前致谢。

4

1 回答 1

1

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

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

于 2013-08-24T13:55:16.457 回答