2013-01-06 42 views
6

iOS uygulamaları oluşturmayla ilgili deneyimim var ancak videoyla ilgili deneyimim yok. Bir sunucuya gerçek zamanlı video akışı yapan bir iPhone uygulaması oluşturmak istiyorum. Sunucuya bir kere o videoyu gerçek zamanlı olarak tüketicilere sunacağım.Videoyu iPhone'dan sunucuya aktarın, kodlayın ve kodlayın

Oldukça fazla malzeme okudum. Birisi aşağıdakiler doğruysa ve benim için boşlukları doldurursa bana haber verebilir.

  1. iPhone'da video kaydetmek için AVFoundation sınıflarını kullanmalıyım. AVCaptureSession kullanıldığında, temsilci yöntemi captureOutput: didOutputSampleBuffer :: fromConnection I, videonun her karesine erişim sağlayabilir. Şimdi video çerçeve olduğunu I çerçevesi
    • Ben Vakfı sınıfları sadece AVAssetWriter yoluyla değil, kolayca bir web sunucusuna akışını destekleyen bir sınıfın yoluyla H264 kodlama teklif biliyorum kodlamak gerekir. Bu nedenle, videoyu bir dosyaya yazmaktan vazgeçtim.
    • İki AssetWritters öğesini 10 saniyelik blok yazmak için kullanabileceğini ve daha sonra bu 10 saniyelik blokları sunucuya aktaracağını belirten diğer yazıları okudum. Birisi, bunu başarmak için birlikte çalışan iki AVAssetWriter'in kullanımını nasıl kodlandırabileceğini açıklayabilir. Herhangi bir kod varsa, lütfen paylaşabilirsiniz.
+0

Kullandığınız şeyi lütfen paylaşır mısınız? –

cevap

5

Sen iPhone'da donanım kodlayıcı kullanmak için tek yol bir dosyaya kodlanmış videoyu yazmak için AVAssetWriter sınıfını kullanarak olduğuna doğrudur. Ne yazık ki AVAssetWriter, dosya kapatılana kadar moov atomunu (kodlanmış videoyu şifrelemek için gerekli olan) dosyaya yazmaz.

Kodlanmış videoyu bir sunucuya aktarmanın bir yolu, bir dosyaya 10 saniyelik video bloğu yazmak, kapatmak ve bu dosyayı sunucuya göndermek olacaktır. Bu yöntemin, kendimi denemediğim halde, dosyaların kapatılması ve açılmasının neden olduğu oynatmada hiçbir boşluk olmadan kullanılabileceğini okudum.

Video akışı here'un başka bir yolunu buldum.

Bu örnek 2 AVAssetWriters'ı açar. Daha sonra ilk karede iki dosyaya yazılır, ancak dosyalardan birini derhal kapatır, böylece atom atomu yazılır. Daha sonra, moov atomu verileri ile ikinci dosya, kodlanmış video verisi akışı elde etmek için bir boru olarak kullanılabilir. Bu örnek sadece video verisi göndermek için çalışır, ancak iPhone'da video ile ilgili birçok sorunun nasıl çözüleceğine karar vermemde yardımcı olan kodun anlaşılması çok temiz ve kolaydır.

+0

Cevabınız hakkında bir sorum var, buna nasıl ses verileri yerleştirebilirim? –