2011-06-06 17 views
9

Ok. Entonces hay un montón de dispositivos Android diferentes. Tengo un servicio de transmisión de video, funciona maravillosamente para iOS. Mi aplicación tiene una función de video en vivo y una función de reproducción de videoclips guardada (que también se transmite al dispositivo). Realicé algunas pruebas en diferentes dispositivos Android y obtuve un montón de diferentes resultados de reproducción. Estoy usando un video de perfil base de 640x480 h.264. Transmitir ese video funciona solo en algunos dispositivos. Para otros dispositivos, esa misma transmisión de video se puede transmitir a baja resolución y funciona en algunos dispositivos, pero no en otros. La transmisión de alto perfil pasa por http://www.wowzamedia.com/ (rtsp) y no funciona en ningún dispositivo Android (pero funciona en iPhone). La opción más baja y peor es Motion JPEG, que funciona en todos los dispositivos probados hasta el momento.Transmisión de video en Android: ¿dispositivo compatible?

Así que mi pregunta es, ¿cómo puedo averiguar (sin tener que probar todos los dispositivos en el mercado) si el dispositivo reproducirá: 640x480 h.264 perfil de base? Si eso no funciona, reproduce el video de baja resolución - si eso no funciona, de forma predeterminada a Motion JPEG.

Además, ¿alguna idea de por qué mi rtsp transcodificado a través de wowza funciona en el iPhone pero no en ningún dispositivo Android (ni siquiera en el Motorola Atrix)?

Respuesta

0

Estos son algunos de los enlaces/problemas con los que me he encontrado, al intentar hacer que la transmisión funcione en diversos dispositivos.

MediaPlayer seekTo doesn't work for streams

MediaPlayer resets position to 0 when started after seek to a different position

MediaPlayer seekTo inconsistently plays songs from beginning

Basic streaming audio works in 2.1 but not in 2.2

MediaPlayer.seekTo() does not work for unbuffered position

Streaming video when seek back buffering start again in videoView/Mediaplayer

Incluso los peces gordos en stackoverflow se preguntan acerca de esto

Si solo desea transmitir sin buscar (que es poco convincente), esto se puede lograr. Pero si recibe una llamada mientras mira, terminará desde el principio.

1

Resolví este problema. Verifique la realización de RTP en su servicio de transmisión y su perfil x264. Mi servidor RTSP funciona bien en 90% de los dispositivos.

p.s Algunos marcos de video en diferentes versiones de Android pueden implementar protocolos RTP y RTSP con algunas diferencias.

+0

¿Podría aclarar qué quiere decir con "realización de RTP"? He estado trabajando con Wowza Media Server durante casi 5 años (y formé parte del equipo de soporte por un tiempo), y este término me resulta totalmente desconocido. –

+0

Lo siento, no quise decir eso. Soy un principiante en inglés. Me refiero a la implementación del protocolo RTP – radya

+0

Ah, bien, entiendo lo que quiere decir ahora - en Wowza, eso está en Application.xml en MediaCaster-> RTP-> RTSP-> RTPTransportMode - en V3 y arriba, su valor predeterminado es 'intercalar', que es TCP. La otra opción es 'udp', que debería ser autoexplicativa. –

3

Streaming en Android es un desastre absoluto. La mayoría de los dispositivos no admiten nada más que Baseline 3.0. Si codifica para iPhone 3, generalmente debería funcionar a través de RTSP. Las versiones más recientes de Android admiten HLS, pero es al azar o no y depende en gran medida de dispositivos específicos.

Cuestiones relacionadas