2011-09-08 12 views
7

Estoy trabajando en una aplicación de Android que permite al usuario hablar en el dispositivo. Entonces quiero guardar eso y rebobinar parte de él para volver a reproducirlo, tal vez avanzar rápidamente a otra parte del audio, pausarlo, reproducirlo, etc. Como un grabador de cinta básico.¿Hay métodos Play, Pause, Rewind, Fast Forward en Android?

¿Hay alguna API o método o código para permitir esto? Si no, ¿a dónde voy desde aquí?

Cualquier ayuda sería muy apreciada.

+0

hola, ¿has hecho esta funcionalidad? puede ayudarme si tiene solución para este problema. – Hasmukh

Respuesta

0

Uso AudioRecorder para registrar los datos. Use el formato PCM.

Luego puedes jugar selectivamente a través de AudioTrack.

6

Al utilizar MediaPlayer puede buscar diferentes posiciones en la transmisión pero esto es diferente de reproducir en avance rápido (o rebobinado rápido), también conocido como "reproducción trucada" en los DVR.

Sin embargo, el avance rápido, probablemente, puede implementarse utilizando seekTo así:

  • establecer un temporizador periódico (es decir postDelayed o scheduleAtFixedRate), cada 100 milisegundos.
  • En Runnable del temporizador, invoque seekTo con un valor que sea un factor que represente la velocidad de reproducción que desea.
    • Así que si quieres 2x avance rápido y después de cada período de 100 mseg buscarás curr_pos + 100 msecs. Esto significa que 100 msecs han pasado, pero ahora estás en prev_pos + 200 msecs.
    • Realizar 4x significa que después de cada período de 100 ms busca curr_pos + 300 mseg.

.

  • Me acabo de dar cuenta de que seekTo probablemente busca la referencia más cercana o I-frame. Entonces, llamar a seekTo (curr_pos + 100) puede no llegar al punto preciso que desee.

Es posible que deba implementar FF en un reproductor de video en el que estoy trabajando. Si lo hago funcionar, actualizaré mi respuesta aquí.