2013-08-24 20 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