Android mp4parser добавляет наложение звука

Я создаю приложение, которое объединяет видео и добавляет наложение звука в формате mp3.

С объединением видео у меня нет проблем, но звук не воспроизводится в выходном видео.

Вот мой код:

 Movie[] inMovies = new Movie[count];
            for (int i = count - 1; i >= 0; i--) {

                File file = new File(lv1List.get(i));
                if (file.exists()) {
                    try {
                        inMovies[counter] = MovieCreator.build(file.getAbsolutePath());
                        counter++;
                    } catch (Exception e) {
                        Log.d("mp4parse", e.getMessage());
                    }
                }

            }
            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("vide")) {
                            videoTracks.add(t);
                        }
                    }
                }
                try {
                    MP3TrackImpl aacTrack = new MP3TrackImpl(new FileDataSourceImpl(audiopath));
                    CroppedTrack aacTrackShort = new CroppedTrack(aacTrack, 1, aacTrack.getSamples().size());
                    audioTracks.add(aacTrackShort);
                } catch (Exception e) {
                    e.printStackTrace();
                }
 Movie result = new Movie();

            try {
                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()])));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                Container out = new DefaultMp4Builder().build(result);
                String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MERGEDoutput" + Long.toString(System.currentTimeMillis()) + ".mp4";
                FileOutputStream fos = new FileOutputStream(new File(filename));

                out.writeContainer(fos.getChannel());
                fos.close();
            } catch (Exception e) {

            }

Выходное видео не имеет звука. Входной mp3 - это обычная музыкальная дорожка.


person androidAnonDev    schedule 27.07.2015    source источник


Ответы (2)


Если вы используете mp4parser, не используйте mp3 для своего аудио. Вместо этого закодируйте звук как AAC, а затем запустите мультиплексор. MP4Parser не любит mp3-файлы :)

person Machine Tribe    schedule 08.08.2017

Я столкнулся с той же проблемой.

Возможно, проблема в том, что ваш звуковой путь недействителен.

Если вы получаете mp3 uri через ACTION_GET_CONTENT, убедитесь, что вы разрешаете uri магазина мультимедиа, прежде чем использовать его. код получения пути из хранилища медиафайлов

person Akhil Raj    schedule 19.01.2016