Android: ExoPlayer – Obtener el número de fotograma actual del vídeo

Estoy desarrollando una aplicación de video de Android donde necesito obtener el número de fotograma actual del video que se muestra mientras está en modo de pausa.

Necesito enviar a mi servidor el número de marco actualmente pausado en vídeo y recuperar una lista de elementos con respecto a ese marco / tiempo, ahora estoy enviando el tiempo de pausa actual en milisegundos, pero no funciona muy bien, porque el Servidor de comparar el tiempo enviado a un marco específico calculado, basado en el tiempo, pero a veces la comparación no es exacta.

Sé que usted puede conseguir un mapa de bits de ese marco si utiliza MediaMetaDataRetriever , y lo hice pero devuelve imagen de mapa de bits y lo que necesito es un índice. Estoy usando ExoPlayer (necesito esa característica para MP4 y para HLS, también, si eso importa).

¿Hay alguna manera de obtener esa información del video?

Puedo publicar una solución a mi problema, Con el fin de obtener el tiempo de trama exacta Simplemente extendido MediaCodecVideoTrackRenderer.java clase de la biblioteca de ExoPlayer y utiliza el valor de lastOutputBufferTimestamp que está en función:

@Override protected boolean processOutputBuffer(long positionUs, long elapsedRealtimeUs, MediaCodec codec, ByteBuffer buffer, MediaCodec.BufferInfo bufferInfo, int bufferIndex, boolean shouldSkip) { boolean processed = super.processOutputBuffer(positionUs, elapsedRealtimeUs, codec, buffer, bufferInfo, bufferIndex, shouldSkip); if (!shouldSkip && processed) { lastOutputBufferTimestamp = bufferInfo.presentationTimeUs; } return processed; } 

Me da la hora exacta y no un tiempo redondeado de, digamos por último, mPlayer.getDuration () o algo así. Si tienes un FPS constante en tu video, puedes calcularlo por división y obtener el número del fotograma. Era simplemente suficiente para mí saber el tiempo exacto del marco.

Estoy utilizando ExoPlayer versión r1.5.3 por lo que no sé si esta solución funcionará para la nueva versión ya que el código probablemente ha cambiado.

  • FFMPEG Fade in y Fade out para superposición
  • ¿Qué son los reproductores ffmpeg de código abierto para iOS / Android?
  • Detectar la orientación de un vídeo grabado en android
  • GStreamer en Android
  • Compilación ffmpeg neón en android - errores de ensamblador
  • ¿Cómo puedo utilizar Runtime.getRuntime.exec con la biblioteca ffmpeg en Android?
  • ¿Cómo aplicar el filtrado de video en android?
  • Comprimir vídeos utilizando FFMPEG y JNI
  • Cómo combinar múltiples archivos .mp4 en .mp4 simple ffmpeg android
  • Javacv: Decodificación H.264 "en vivo" de la corriente procedente del servidor red5 en el dispositivo Android
  • FFMpeg en Android, referencias indefinidas a las funciones de libavcodec, aunque aparece en la línea de comandos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.