Android Studio - Добавить два видео, но с черным экраном - PullRequest
0 голосов
/ 09 июля 2020

Прежде всего, привет,

Когда я добавляю еще один файл mp4 в конец файла mp4, видео выглядит полностью черным экраном, но я могу получить звуки видео.

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

Я получаю сообщение об ошибке "перемещение текста" при слиянии с библиотекой FFmpeg. (Эта проблема устраняется, когда я меняю эту версию библиотеки, но у меня есть другие проблемы. Поэтому я вижу альтернативу mp4parser.)

Фрагмент кода, который позволяет видео быть объединены следующим образом. С этого момента спасибо.

private void appendTwoVideos(String firstVideoPath, String secondVideoPath) {
    try {
        Movie[] inMovies = new Movie[2];

        inMovies[0] = MovieCreator.build(firstVideoPath);
        inMovies[1] = MovieCreator.build(secondVideoPath);

        List<Track> videoTracks = new LinkedList<>();
        List<Track> audioTracks = new LinkedList<>();

        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()])));
        }

        BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(result);

        @SuppressWarnings("resource")
        FileChannel fc = new RandomAccessFile(DIRECTORY_PATH + "output.mp4", "rw").getChannel();
        out.writeContainer(fc);
        fc.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 06 сентября 2020

Вероятно, это связано с тем, что видео, которое вы пытаетесь добавить или присоединить, имеют разную частоту кадров. Например, одно может быть видео с замедленным движением, а другое - видео с быстрой перемоткой / замедленной съемкой. Во время добавления звук работает нормально, но android не дает функции добавления видео с разной частотой кадров с использованием is библиотеки. Таким образом, вы видите черный экран со звуком.

Я бы рекомендовал использовать библиотеку FFmpeg. Хотя это и медленно, но дает желаемый результат.

...