我想用我的android设备(Nexus 10)录制视频,然后上传到youtube。
到目前为止,我正在使用android MediaRecoder进行录制,并通过LocalSocket进行流式传输,将数据保存到多个文件中。但是这些文件是不可播放的。
我读过一些文章,在API-Level18中,可以使用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();
提前谢谢。
我认为你不能那样做。写入mp4 muxed文件需要文件描述符是可查找的。Unix套接字不是。这可能是因为多路复用到mp4通常需要多路复用器来回寻找以写入索引等…而这在本地套接字上是无法完成的。
如果您不能简单地输出到文件然后复制它,这对您来说可能非常有趣:http://hello-qd.blogspot.it/2013/05/how-to-process-mediarecorder-frames.html.