Transmisión de vídeo desde el dispositivo Android al servidor LAMP

A partir de este punto: http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system Estoy intentando crear una aplicación para guardar Una secuencia de vídeo desde una cámara móvil a un servidor remoto. (He encontrado varios ejemplos en el código de google para Android parte: ipcamera-for-android, spydroid-ipcamera, etc.)

He leído algunas respuestas aquí y alrededor de la red, pero no puedo encontrar la solución sobre cómo "leer" y guardar la corriente de datos en el lado del servidor.

Mi conocimiento de java es pobre, así que prefiero ser capaz de crear scripts de servidor en PHP (usando sockets de servidor, u otras cosas). ¿Alguien puede ayudar en esta parte?

ACTUALIZAR

Utilizando mi poco conocimiento de herramientas como mplayer / ffmpeg mencorer Puedo guardar la secuencia de vídeo … por ejemplo, utilizando ipcamera-for-android y su servidor nanohttp utilizando en el lado del servidor:

ffmpeg-i "http://{ip of android phone}:8080/live.flv" /my/server/path/stream.flv 

Sin embargo, sólo se puede utilizar en LAN, necesito que el servidor de conexión móvil y no viceversa.

ACTUALIZAR 2

Algunos progresos .. utilizando este script en el lado del servidor

 #!/usr/bin/php5 <?php $handle = fopen("stream.3gp","w"); $socket = stream_socket_server("tcp://192.168.0.102:9000", $errno, $errstr); if ($socket) { echo "start listening\n"; while ( $conn = stream_socket_accept($socket, 180)) { echo "phone connected\n"; while ($chunk = stream_socket_recvfrom($conn, 1500)) { fwrite($handle,$chunk); } } } fclose($handle); fclose($socket); ?> 

Sin embargo, el archivo 3gp no se puede reproducir ..

ACTUALIZACIÓN 3

 #!/usr/bin/php5 <?php $socket = stream_socket_server("tcp://192.168.0.102:9000", $errno, $errstr); $file = "saved.3gp"; $threegp_header = "\x00\x00\x00\x18\x66\x74\x79\x70\x33\x67\x70\x34\x00\x00\x03\x00\x33\x67\x70\x34\x33\x67\x70\x36"; $four_bytes = "\x00\x00\x00\x00"; if (!$socket) { echo "$errstr ($errno)\n"; } else { echo "server start listening\n"; while ( $conn = @stream_socket_accept($socket, 180)) { echo "phone connected\n"; $handle = fopen($file,"w"); //mediaRecorder gives invalid stream header, so I replace it discarding first 32 byte, replacing with 28 good byte (standard 3gp header plus 4 empty bytes) $discard = stream_get_contents($conn, 32); fwrite($handle, $threegp_header); fwrite($handle, $four_bytes); //then confinue to write stream on file until phone stop streaming while(!feof($conn)) { fwrite($handle, stream_get_contents($conn, 1500)); } echo "phone disconnected\n"; fclose($handle); //then i had to update 3gp header (bytes 25 to 28) with the offset where moov atom starts $handle = fopen($file,"c"); $output = shell_exec('grep -aobE "moov" '.$file); $moov_pos = preg_replace('/moov:(\d+)/i', '\\1', $output); $moov_pos_ex = strtoupper(str_pad(dechex($moov_pos - 24), 8, "0", STR_PAD_LEFT)); fwrite($handle, $threegp_header); $tmp = ''; foreach(str_split($moov_pos_ex,2) as $hex) { $tmp .= pack('C*', hexdec($hex)); } fwrite($handle, $tmp); fclose($handle); } echo "phone disconnected\n"; } @fclose($handle); fclose($socket); ?> 

Después de algunos experimentos, esta vez vlc / mplayer parece que se puede jugar .. todavía algunos problemas con el audio (pero creo que tengo algo mal en el lado androide)

Probablemente va a querer usar la funcionalidad de socket del servidor de PHP.

Aquí está un tutorial práctico que pasa por lo que necesita hacer para implementar la transmisión de datos.

Dependiendo de la secuencia entrante (protocolo, etc.), has terminado o quieres terminar usando:

No estoy seguro de lo que está dispuesto a utilizar / instalar en la LÁMPARA, o lo que usted prefiere, pero sé VLC puede capturar fácilmente una corriente entrante.

http://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream

Por supuesto, la versión de la línea de comandos de VLC es probablemente lo que quieres. Nunca lo he hecho, no estoy seguro de cómo funciona, espero que no instale una tonelada métrica de paquetes adicionales. Es algo que hay que mirar con respecto a posibles preocupaciones.

  • ¿Es posible capturar / guardar archivos JPEG desde un flujo MJPEG? (Y también el propio MJPEG)?
  • Defragment H264 NAL corriente (originalmente 1722 avb paquetes)
  • Captura de la cámara IP Stream y publicar en mi sitio web
  • Android - MediaPlayer's en Preparado Llamado incluso antes de que el flujo se prepare en Android 4.0+
  • Servidor para transmitir vídeo RTSP a Android
  • Muxing Android MediaCodec codificado H264 paquetes en RTMP
  • programatically leer buffer de trama / dev / graphics / fb0 en android
  • Live555 en Android
  • Pantalla de MediaProjection de Android que refleja al explorador de Web sobre USB
  • GsaIOException Desbordamiento del búfer, sin espacio disponible
  • ¿Cómo obtener estadísticas de tráfico de red para aplicaciones de streaming de vídeo en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.