我正在開發一個使用MediaRecorder類的音頻錄製應用程序。 我有以下要求:如何暫停和恢復在Android的音頻錄製
1.當一個暫停按鈕被按下,然後暫停記錄。
2.當恢復按鈕被按下,然後恢復錄製暫停的地方。 我試試這個link
但我無法實現該功能。
任何幫助/建議將不勝感激。
我正在開發一個使用MediaRecorder類的音頻錄製應用程序。 我有以下要求:如何暫停和恢復在Android的音頻錄製
1.當一個暫停按鈕被按下,然後暫停記錄。
2.當恢復按鈕被按下,然後恢復錄製暫停的地方。 我試試這個link
但我無法實現該功能。
任何幫助/建議將不勝感激。
這個鏈接也可能對於需要暫停和錄製音頻的用戶非常有用。
你可以參考我的答案here如果仍然有這個問題。
解決方法是在用戶暫停並重新開始恢復時停止記錄器,如在stackoverflow中許多其他答案中所述。存儲陣列中生成的所有音頻/視頻文件,並使用以下方法合併所有媒體文件。該示例取自mp4parser庫並根據需要修改一點。
public static boolean mergeMediaFiles(boolean isAudio, String sourceFiles[], String targetFile) {
try {
String mediaKey = isAudio ? "soun" : "vide";
List<Movie> listMovies = new ArrayList<>();
for (String filename : sourceFiles) {
listMovies.add(MovieCreator.build(filename));
}
List<Track> listTracks = new LinkedList<>();
for (Movie movie : listMovies) {
for (Track track : movie.getTracks()) {
if (track.getHandler().equals(mediaKey)) {
listTracks.add(track);
}
}
}
Movie outputMovie = new Movie();
if (!listTracks.isEmpty()) {
outputMovie.addTrack(new AppendTrack(listTracks.toArray(new Track[listTracks.size()])));
}
Container container = new DefaultMp4Builder().build(outputMovie);
FileChannel fileChannel = new RandomAccessFile(String.format(targetFile), "rw").getChannel();
container.writeContainer(fileChannel);
fileChannel.close();
return true;
}
catch (IOException e) {
Log.e(LOG_TAG, "Error merging media files. exception: "+e.getMessage());
return false;
}
}
對音頻文件使用標誌isAudio爲true,對於視頻文件爲false。
現在開始使用API 24,您可以暫停並恢復。 – Jenix