2012-08-10 9 views
11

Quiero reproducir video hacia atrás en AVPlayer. He intentado cambiar la propiedad de las tarifas a -1.0, y aunque funcionó, no fue fácil. ¿Hay alguna manera a través de la cual pueda reproducir suavemente videos hacia atrás?Reproducción de video inverso en iOS

+4

la reproducción de vídeo es una cosa interesante, debido a que el vídeo tiene fotogramas clave en cada cuadro X, y los fotogramas entre los fotogramas clave se acaba de almacenar los cambios de la imagen del cuadro anterior (no el cuadro completo). entonces, reproducir un video no es solo cambiar el orden de los fotogramas, porque los fotogramas están en relación con el anterior (¡no con el siguiente!) y, por lo general, no cambias el orden de los fotogramas para obtener En la versión anterior, la mayoría de los casos debe volver a procesar el video nuevamente. esta es la razón genérica por la que tienes problemas con los videos. – holex

+0

Pregunta muy interesante. – Daniel

+1

Gracias. ¿Puede por favor sugerirme alguna solución para la reproducción inversa del video? –

Respuesta

6

Como se indica en los comentarios, el problema es con fotogramas clave y el hecho de que la mayoría de los códecs no están diseñados para reproducirse al revés. Hay 2 opciones para volver a codificar el video que no requiere que realmente invierta el video en la edición.

  1. Haga que cada cuadro sea un fotograma clave. He visto esto bien para códecs como H.264 que se basan en fotogramas clave. Básicamente, si cada fotograma es un fotograma clave, cada fotograma puede decodificarse sin depender de ningún fotograma previo, por lo que es lo mismo que jugar hacia adelante.
  2. Utilice un códec que no utilice fotogramas clave ni fotogramas clave (básicamente, todos los fotogramas son siempre fotogramas clave). PhotoJPEG es una de esas opciones, aunque no estoy completamente seguro de si se reproduce en iOS. Yo pensaría que sí. Funciona muy bien en una Mac.

Tenga en cuenta que cualquiera de estas opciones dará como resultado un mayor tamaño de archivo en comparación con el típico video codificado "fotograma clave x fotogramas".

0

Tiene que llegar al final del elemento actual y luego establecer la tasa en el valor negativo. Algo como esto:

-(void)reversePlay { CMTime durTime = myPlayer.currentItem.asset.duration; if (CMTIME_IS_VALID(durTime)) { [myPlayer seekToTime:durTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; [myPlayer setRate:-1.0]; } else NSLog(@"Invalid time"); }

fuente: https://stackoverflow.com/a/16104363/701043

Cuestiones relacionadas