2013-08-24 19 views
2

我想用我的Android设备(Nexus 10)录制视频并稍后将其上传到YouTube。Android:将Mediarecorder-Stream保存为可播放文件

到目前为止,我用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(); 

感谢。

+0

而不是写入clientSocket为什么不写入扩展名为.mp4的文件? –

+0

你为什么说“LocalSocket的原始数据”?输出是否是未混合的h264? –

回答

1

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

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

+0

感谢您的支持。但是,当id做'extractor.getTrackCount();'我收到'0'!我的文件或MediaRecorder设置有问题吗?我只是将流保存到文件中! – bronko

+0

你可以播放文件吗? –

+0

不,我不能玩! – bronko