Intereting Posts
Как добавить источник + javadoc для android-support-v7? Как я могу изменить статус своего Gtalk или Gmail в Android? Android Как читать актив извне основного вида деятельности Как создать круговую панель прогресса в Android, которая вращается на ней? Я хочу установить вычисленный приоритет, используя временную метку сервера, предоставленную Firebase Android getSupportedVideoSizes allways возвращает null Нажмите на пункт «Ящик навигации», появится новый список в навигационном ящике Как получить смещение прокрутки на MPAndroidChart? Finish () не закрывает активность при вызове после первого запуска Как остановить воспроизведение youtube видео в веб-браузере Android? Попытка воспроизведения видео из необработанной папки (VideoView) Android Swipe on List Зависимость зависимости градиента от Android Календарь Android Календарь всех дней праздника отключается на один день по GMT + x Области Как показать WebView с типом Theme.Dialog в Android

Android – объединение двух файлов MP4

Я пишу проект Android, где я записываю несколько аудиофайлов. Поэтому я устанавливаю следующие параметры. Запись работает отлично.

recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

Моя проблема в том, что каждый раз, когда я записываю, вывод записывается в отдельный файл. Теперь мне нужно объединить эти файлы в один файл. У кого-нибудь есть идея объединить несколько файлов MPEG 4 в проекте Android?

Спасибо за вашу помощь….

Solutions Collecting From Web of "Android – объединение двух файлов MP4"

В андроиде нет встроенных функций для объединения двух аудиофайлов. Если вы сделали это через любую операцию с файлом, то это также сработает, потому что не работает как заголовки аудиофайлов.

Я рекомендовал использовать внешнюю библиотеку FFMPEG для вашего приложения для Android.

Я бы предложил использовать мою библиотеку mp4parser, тогда вам не придется иметь дело с родными libs. Взгляните на AppendExample. Он делает именно то, что вы хотите сделать. Следите за последней версией. См. Ниже AppendExample, чтобы понять, как это работает.

  Movie[] inMovies = new Movie[]{MovieCreator.build(Channels.newChannel(AppendExample.class.getResourceAsStream("/count-deutsch-audio.mp4"))), MovieCreator.build(Channels.newChannel(AppendExample.class.getResourceAsStream("/count-english-audio.mp4")))}; List<Track> videoTracks = new LinkedList<Track>(); List<Track> audioTracks = new LinkedList<Track>(); for (Movie m : inMovies) { for (Track t : m.getTracks()) { if (t.getHandler().equals("soun")) { audioTracks.add(t); } if (t.getHandler().equals("vide")) { videoTracks.add(t); } } } Movie result = new Movie(); if (audioTracks.size() > 0) { result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()]))); } if (videoTracks.size() > 0) { result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()]))); } IsoFile out = new DefaultMp4Builder().build(result); FileChannel fc = new RandomAccessFile(String.format("output.mp4"), "rw").getChannel(); fc.position(0); out.getBox(fc); fc.close();