2013-01-06 10 views
6

Ho esperienza con la creazione di app iOS ma non ho esperienza con i video. Voglio creare un'app per iPhone che trasmetta video in tempo reale a un server. Una volta sul server consegnerò quel video ai consumatori in tempo reale.Cattura, codifica e trasmette video da un iPhone a un server

Ho letto un bel po 'di materiale. Qualcuno può farmi sapere se il seguente è corretto e riempire gli spazi vuoti per me.

  1. Per registrare video su iPhone, è consigliabile utilizzare le classi di AVFoundation. Quando si utilizza AVCaptureSession, il metodo delegate captureOutput: didOutputSampleBuffer :: fromConnection consente di accedere a ciascun fotogramma del video. Ora che ho il frame video ho bisogno di codificare il frame
    • So che le classi Foundation offrono solo la codifica H264 tramite AVAssetWriter e non tramite una classe che supporta facilmente lo streaming su un server web. Pertanto, sono rimasto con la scrittura del video in un file.
    • Ho letto altri post che dicono che possono utilizzare due AssetWritters per scrivere blocchi di 10 secondi e NSStream quei 10 secondi di blocchi sul server. Qualcuno può spiegare come codificare l'uso di due AVAssetWriter che lavorano insieme per raggiungere questo obiettivo. Se qualcuno ha codice, potrebbe condividere per favore.
+0

Potete per favore condividere ciò che avete finito usando? –

risposta

5

Lei ha ragione che l'unico modo per utilizzare gli encoder hardware su iPhone è quello di utilizzare la classe AVAssetWriter di scrivere il video codificato in un file. Sfortunatamente AVAssetWriter non scrive l'atomo moov nel file (che è necessario per decodificare il video codificato) finché il file non viene chiuso.

Così un modo per trasmettere il video codificato a un server sarebbe scrivere 10 secondi di video in un file, chiuderlo e inviarlo al server. Ho letto che questo metodo può essere utilizzato senza interruzioni nella riproduzione causate dalla chiusura e dall'apertura di file, sebbene non l'abbia mai tentato io stesso.

Ho trovato un altro modo per riprodurre video in streaming here.

Questo esempio apre 2 AVAssetWriters. Quindi sul primo frame scrive su due file, ma chiude immediatamente uno dei file in modo che l'atomo di moov venga scritto. Quindi con i dati dell'atomo di moov il secondo file può essere usato come una pipe per ottenere un flusso di dati video codificati. Questo esempio funziona solo per l'invio di dati video, ma è molto pulito e facile da capire codice che mi ha aiutato a capire come affrontare molti problemi con i video su iPhone.

+0

Ho una domanda sulla risposta, come posso incorporare dati audio a questo –

Problemi correlati