Rotar vídeo con Mp4parser

Necesito girar un video para ajustar algunas de mis necesidades. Voy a explicar los detalles en la siguiente lista.

Estoy creando una aplicación similar a Vine. Tengo que grabar segmentos de video y luego fusionar todas las partes en un solo archivo. Estoy haciendo esto sin problema en una aplicación de Android utilizando la biblioteca de analizador mp4 con la última versión 1.0-RC-26 utilizando el ejemplo proporcionado en su sitio web: aquí

El ejemplo de vídeo adjunto funciona bien si todos los vídeos tienen la misma orientación, pero he descubierto algunos problemas de grabación de vídeo de la cámara frontal por lo que la solución rápida fue establecer la orientación de vídeo de grabación en 270. La parte mala de esta solución es que el segmento con Esta orientación aparece con la orientación incorrecta en el vídeo fusionado.

Mi posible solución a esto es girar el video para aplicar lo que necesito en diferentes situaciones, pero no estoy teniendo un ejemplo de trabajo con mi código. Buscando en internet encontré soluciones como ésta aquí . El problema con este código es que no es compatible con la última versión (da un error de compilación). También intenté entender la lógica de la biblioteca, pero no tengo resultados. Por ejemplo, he experimentado el uso de la instrucción setMatrix en el objeto de película, pero simplemente no funcionan.

 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"); } 

¿Alguien ha girado el video con la última versión de Mp4 parser? Inglés no es mi lengua materna así que pido disculpas cualquier error de gramática.

 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; } 

Esto es lo que hice para rotar un video.

  • Reproducir un archivo m3u8 local en android mostrando setDataSourceFD failed .: status = 0x80000000
  • ¿Cómo reproducir dos pistas de audio y video separadas en un solo reproductor sin crear ningún archivo de salida en android?
  • Utilice Video chat en segundo plano como Skype usando WebRTC en Android
  • Orientación personalizada de grabación de vídeo
  • Android webview html5 vídeo autoplay no funciona en android 4.0.3
  • Pantalla negra en cromo para video html5 de Android
  • ¿Cómo obtener vídeo de la intención de la cámara y guardarlo en un directorio?
  • Cómo jugar video HTML5 en línea con Phonegap para Android 4.1.1
  • ¿Puede guardar / ver un archivo de vídeo y los datos del sensor simultáneamente?
  • Recorte de vídeo mediante "com.android.camera.action.TRIM" (paquete Gallery2)
  • Android: captura de video en dispositivo o emulador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.