Reproduce la película h.264 de socket-streamed en iOS usando AVFoundation

Estoy trabajando en una pequeña aplicación de iPhone que está transmitiendo contenido de películas a través de una connection de networking usando sockets regulares. El video está en formatting H.264 . Sin embargo, estoy teniendo dificultades para reproducir / descifrar los datos. He estado considerando usar FFMPEG , pero la licencia lo hace inadecuado para el proyecto. He estado buscando en el marco AVFoundation de Apple ( AVPlayer en particular), que parece ser capaz de manejar el contenido de h264, sin embargo, solo puedo encontrar methods para iniciar la película usando una url, no probando un buffer de memory transmitido desde la networking

He estado haciendo algunas testings para hacer que esto suceda de todos modos, usando los siguientes enfoques:

  1. Juega la película con un AVPlayer normal. Cada vez que se reciben datos en la networking, se escribe en un file usando fopen con append-mode. El AVPlayer de AVPlayer cargar / volver a crear con los datos actualizados. Parece que hay dos problemas con este enfoque: en primer lugar, la pantalla se vuelve negra durante un breve momento, mientras que el primer activo se descarga y el nuevo se carga. En segundo lugar, no sé exactamente dónde se detuvo la reproducción, así que no estoy seguro de cómo encontraría el lugar adecuado para comenzar a jugar el nuevo activo.
  2. El segundo enfoque es escribir los datos en el file como en el primer enfoque, pero con la diferencia de que los datos se cargan en un segundo activo. AVQueuedPlayer se utiliza un AVQueuedPlayer donde el segundo activo se inserta / pone en queue en el reproductor y luego se AVQueuedPlayer cuando se ha realizado el almacenamiento en búfer. El primer activo puede downloadse sin una pantalla negra. Sin embargo, usar este enfoque es aún más problemático (que el primer enfoque) para saber dónde comenzar a jugar el nuevo activo.

¿Alguien ha hecho algo así y lo ha hecho funcionar? ¿Hay una manera adecuada de hacer esto usando AVFoundation ?

El método oficial para hacer esto es el formatting HTTP Live Streaming que admite múltiples niveles de calidad (entre otras cosas) y cambia automáticamente entre ellos (por ejemplo, si el usuario se mueve de WiFi a celular).

Puede encontrar los documentos aquí: Apple Http Streaming Docs