2011-05-10 35 views
5

Estoy creando una aplicación que recopila voz a través del micrófono como archivos wav. Estas grabaciones necesitan ser transmitidas a un servidor y guardadas (como archivos wav, sé que son grandes pero tienen que ser wav). También necesito transmitir audio (estos pueden ser mp3) del servidor a la aplicación web para que se reproduzca para el usuario. No tengo idea de cómo implementar esto, pero me gustaría usar una aplicación Java EE porque estoy familiarizado con Java y es más fácil de mantener que Flex (estamos teniendo problemas con el antiguo código Flex en el trabajo). Mis preocupaciones son:Transmisión de audio con Java

  1. ¿Cómo guardo la transmisión para que los usuarios escuchen todo el archivo sin interrupciones? También está bien transferir el archivo completo y luego jugarlo, pero saber cómo hacerlo sería agradable.
  2. ¿Cómo verifico las transmisiones al servidor? ¿Puedo enviar paquetes y verificar/reenviar por paquete?
  3. ¿Hay API existentes para esto (por favor) o tengo que escribir esto todo a mano?
+0

No está claro, a partir de su pregunta, ¿cuántos componentes están involucrados en su aplicación general. Usted escribió "También necesito transmitir audio desde el servidor a la aplicación web que se reproducirá para el usuario". Eso implica que hay una aplicación web * y * un servidor, y las dos son dispares. Si esto es correcto, sería útil si proporciona información sobre lo que existe actualmente. – Isaac

Respuesta

1

Al comentar su pregunta, no está claro si ya ha decidido qué componentes existen en la topología. En particular, no está claro si ya tiene un proceso de servidor a cargo de almacenar esos archivos de audio. Por lo tanto, tendré que hacer algunas suposiciones en mi respuesta. Siéntase libre de comentar, y haré lo mejor para ajustarme.

  1. La única manera de asegurar que un archivo de audio se reproduce (por el usuario final) sin interrupciones de red inducida es que el usuario final (o una aplicación que se ejecuta en el lado del usuario final, como algún código de JavaScript) reproducir la secuencia de audio después de que se descargó en su totalidad. A menos que lo haga, solo puede reducir el riesgo de pausas; no puedes eliminarlo Incluso el algoritmo de almacenamiento en búfer más sofisticado no puede hacer frente a una interrupción de la red del 99,99% en el almacenamiento en búfer de toda la secuencia. Como no estoy seguro de si tiene una aplicación del lado del cliente involucrada en esto, no puedo aconsejar cómo forzar el lado del cliente para descargar el archivo completo en lugar de reproducirlo "tal como se produce"; en el caso más simple, puede ser suficiente con usar el encabezado Content-Disposition: http://en.wikipedia.org/wiki/MIME#Content-Disposition

  2. La respuesta a esta pregunta, una vez más, depende de cómo diseñe la solución. Sin embargo, en general, siempre y cuando use las API de transmisión estándar (como Java IO), no me preocuparía demasiado por verificar el contenido para detectar errores. La corrección de errores ya se proporciona más abajo en la pila de red (por ejemplo, el controlador de red de su sistema operativo).

  3. Apache Commons' de carga de archivos puede ser útil - una vez más, en función de su arquitectura: http://commons.apache.org/fileupload/

Cuestiones relacionadas