2

Android デバイス (Nexus 10) でビデオを録画し、後で YouTube にアップロードしたいと考えています。

これまでのところ、Android MediaRecoder で記録し、LocalSocket 経由でストリーミングして、データを複数のファイルに保存しています。しかし、ファイルは再生できません。

API レベル 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 に答える