2016-09-04 21 views
2

を再開し、我々は24 以下のAPIレベルのための一時停止/再開を持っていないので、これを行う方法があることができます:ポーズ&AndroidのMediaRecorder(APIレベル<24)

  1. 一時停止中にレコーダーを停止し、録音ファイルを作成します。
  2. また、レジュームを再開して別のファイルを作成し、ユーザーが停止するまで続けます。
  3. 最後にすべてのファイルをマージします。

多くの人がこの問題をよく尋ねましたが、これを解決するためには何も見つかりませんでした。人々は、一時停止操作で記録を停止し、再開時に再開することによって、複数のメディアファイルを作成することについて話します。だから私の質問はどのように私たちはマージ/参加するすべてのメディアファイルをプログラムでですか?

私のケースでは、 MPEG4コンテナ - オーディオ用mp4とビデオ用mp4。

私はSequenceInputStreamを使って、生成されたそれぞれの記録されたファイルの複数のInputStreamをマージしようとしました。しかし、常に最初のファイルのみが出力されます。

コードスニペット:

Enumeration<InputStream> enu = Collections.enumeration(inputStreams); 
     SequenceInputStream sqStream = new SequenceInputStream(enu); 
     while ((oneByte = sqStream.read(buffer)) != -1) { 
      fileOutputStream.write(buffer, 0, oneByte); 

     } 
     sqStream.close(); 
     while (enu.hasMoreElements()) { 
      InputStream element = enu.nextElement(); 
      element.close(); 
     } 
     fileOutputStream.flush(); 
     fileOutputStream.close(); 
+0

[Androidでの音声録音を一時停止して再開する](https://stackoverflow.com/questions/5743165/pause-and-resume-audio-recording-in-android)の可能な複製 – soshial

答えて

9

私はmp4parserライブラリを使用してこの問題を解決することができます。このライブラリ:)

の作者に多くのおかげで、あなたのGradleのファイルに依存関係の下に追加します。すでに多くの他の回答で述べたように

compile 'com.googlecode.mp4parser:isoparser:1.0.2' 

ソリューションは、ときに、ユーザーの一時停止レコーダーを停止し、再開に再起動することですスタックオーバーフロー。生成されたすべてのオーディオ/ビデオファイルを配列に格納し、以下の方法を使用してすべてのメディアファイルをマージします。この例は、mp4parserライブラリからも取得され、私の必要に応じて少し変更されています。

フラグisAudioをオーディオファイルではtrue、ビデオファイルではfalseを使用します。

関連する問題