Поворот видео с помощью Mp4parser

Мне нужно повернуть видео, чтобы настроить некоторые из моих потребностей. Я объясню детали в следующем списке.

Я создаю приложение, подобное Vine. Я должен записывать сегменты видео, а затем объединять все части только в один файл. Я делаю это без проблем в приложении для Android, используя библиотеку парсеров mp4 с последней версией 1.0-RC-26, используя пример, представленный на их веб-сайте: здесь

Пример добавления видео работает отлично, если все видео имеют одинаковую ориентацию, но я обнаружил некоторые проблемы с записью видео с передней камеры, поэтому быстрым решением было установить запись видеозаписи на 270. Плохая часть этого решения заключается в том, что сегмент с Эта ориентация отображается с неправильной ориентацией на объединенном видео.

Мое возможное решение для этого – повернуть видео, чтобы применить то, что мне нужно в разных ситуациях, но у меня нет рабочего примера с моим кодом. В Интернете я нашел решения, подобные этому. Проблема с этим кодом заключается в том, что он несовместим с последней версией (он дает ошибку компиляции). Я тоже пытался понять логику библиотеки, но у меня нет результатов. Например, я экспериментировал с использованием команды setMatrix объекта Movie, но он просто не работает.

 public static void mergeVideo(int SegmentNumber) throws Exception { Log.d("PM", "Merge process started"); Movie[] inMovies = new Movie[SegmentNumber] ; //long[] Matrix = new long[SegmentNumber]; for (int i = 1 ; i <= SegmentNumber; i++){ File file = new File(getCompleteFilePath(i)); if (file.exists()){ FileInputStream fis = new FileInputStream(getCompleteFilePath(i)); //Set rotation I tried to experiment with this instruction but is not working inMovies [i-1].setMatrix(Matrix.ROTATE_90); inMovies [i-1] = MovieCreator.build(fis.getChannel()); Log.d("PM", "Video " + i + " merged" ); } //fis.close(); } 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()]))); } Container out = new DefaultMp4Builder().build(result); //out.getMovieBox().getMovieHeaderBox().setMatrix(Matrix.ROTATE_180); //set orientation, default merged video have wrong orientation // Create a media file name // String filename = getCompleteMergedVideoFilePath() ; FileChannel fc = new RandomAccessFile(String.format(filename), "rw").getChannel(); out.writeContainer(fc); fc.close(); //don't leave until the file is on his place File file = new File (filename); do { if (! file.exists()){ Log.d("PM", "Result file not ready"); } } while (! file.exists() ); // Log.d("PM", "Merge process finished"); } 

Кто-нибудь повернул видео с последней версией парсера Mp4? Английский не мой родной язык, поэтому я извиняюсь за любую грамматическую ошибку.

 for (int i = 1; i <= SegmentNumber; i++) { IsoFile isoFile = new IsoFile(getCompleteFilePath(i)); Movie m = new Movie(); List<TrackBox> trackBoxes = isoFile.getMovieBox().getBoxes( TrackBox.class); for (TrackBox trackBox : trackBoxes) { trackBox.getTrackHeaderBox().setMatrix(Matrix.ROTATE_90); m.addTrack(new Mp4TrackImpl(trackBox)); } inMovies[i - 1] = m; } 

Это то, что я сделал, чтобы повернуть видео.

Intereting Posts
Как вставлять видео Youtube в приложение для Android Cordova FFMPEG исчезает и исчезает для наложения Ограничение словаря распознавания голоса для более быстрого совпадения и хорошей точности Proguard обфускает имена операций в манифесте объединенной библиотеки Тестирование обновления adb и установка? Как отобразить диалоговое окно в android без контекста Activity? Разница между URL.openConnection () и URLConnection.connect ()? Android SDK менеджер не откроет Java.lang.UnsupportedOperationException: это не поддерживается, используйте MenuItemCompat.setOnActionExpandListener () Eclipse сохраняет рабочее пространство … и строительное пространство … и рабочее пространство для строительства Как импортировать исходный код проекта приложения Android в Eclipse? Отправлять multipart с файлами с помощью модификации: 2.0.0-beta1 Android, как установить программную программу windowanimation Сортировка нулевых данных в запросе базы данных Как сделать андроид: background = "? Android: attr / selectableItemBackground работают в API-уровне 8