2010-10-19 10 views
29

Mi piacerebbe trasmettere video da una fotocamera dell'iPhone a un'app in esecuzione su un Mac. Pensa in qualche modo alla chat video, ma solo in un modo, dal dispositivo all'app ricevente (e non è una video chat).Quali tecniche sono le migliori per trasmettere in streaming i dati della videocamera iPhone su un computer?

La mia conoscenza di base finora:

  1. È possibile utilizzare AVFoundation per ottenere i dati della videocamera 'live' senza salvare in un file, ma è dati non compressi e quindi avrei dovuto gestire la compressione da solo .
  2. Non c'è un supporto AVCaptureOutput integrato per l'invio a un percorso di rete, dovrei lavorare su questo punto per conto mio.

Ho ragione su quanto sopra o sono già fuori pista?

Apple Tech Q&A 1702 fornisce alcune informazioni sul salvataggio di singoli fotogrammi come immagini: è questo il modo migliore per farlo? Salvando solo 30fps e poi qualcosa come ffmpeg per comprenderli?

C'è molta discussione sullo streaming live su iPhone ma molto meno informazioni su persone che inviano video in diretta. Sto sperando in alcuni ampi colpi per farmi puntare nella giusta direzione.

+2

Hi.Di hai implementato questa funzionalità?. Aggiornalo come Risposta qui o dammi alcuni collegamenti per farlo nel mio progetto – Ramz

+0

puoi aiutarmi per la domanda http://stackoverflow.com/questions/40079842/ios- ruotare-filtro-video-stream-in-ios Oppure può aiutarmi con il tuo codice di esempio operativo :) –

risposta

19

Dipende molto dalla risoluzione del target e dal tipo di prestazioni del frame rate che si desidera utilizzare.

Da un punto di vista astratto, probabilmente avrei un thread di acquisizione per riempire un buffer direttamente da AVCaptureOutput e un thread di comunicazioni per inviare e rezero il buffer (riempito se necessario) a un host precedentemente specificato ogni x millisecondi.

Dopo a realizzare il trasferimento dei dati iniziale, avrei lavorato sul raggiungimento di 15 fps alla risoluzione più bassa, e lavorare la mia strada fino a quando il buffer overflow prima che il thread di comunicazione in grado di trasmettere che richiederebbe bilanciamento risoluzione dell'immagine, la dimensione del buffer (probabilmente dipende GSM e presto le dimensioni dei frame CDMA) e infine la velocità massima alla quale è possibile trasmettere quel buffer.

+0

Come posso trasmettere sia i frame audio che i frame video? –

24

È possibile utilizzare AVCaptureVideoDataOutput e un sampleBufferDelegate per acquisire frame compressi non elaborati, quindi è sufficiente eseguire il flusso in rete. AVFoundation fornisce un'API per codificare i frame su file video locali, ma non fornisce alcuno strumento per lo streaming sulla rete. La soluzione migliore è trovare una libreria che trasmetta i frame grezzi sulla rete. Vorrei iniziare con ffmpeg; Credo che libavformat supporti RTSP, guarda il codice ffserver.

Si noti che è necessario configurare AVCaptureVideoDataOutput per fornire fotogrammi compressi, in modo da evitare di comprimere i fotogrammi video non elaborati senza il vantaggio della codifica hardware.

+0

Entrambe queste erano buone risposte utili. È stato difficile decidere. Grazie! – Hunter

Problemi correlati