2011-08-27 15 views
16

Film çerçevesinin video izini AVFoundation ile bir OpenGL dokusuna kare olarak yükledim. Burada cevap açıklanan adımları takip: iOS4: how do I use video file as an OpenGL texture? ve buradan indirilebilir WWDC2010 dan GLVideoFrame örnekten bazı kodlar aldı: ben videoya senkronize olarak filmin görsel-parçayı çalmak nasıl http://bit.ly/cEf0rMAVFoundation: Video OpenGL texture working - Ses nasıl çalınır ve senkronize edilir?

. Bence ayrı bir oyuncuda oynamak için iyi bir fikir değil, aynı AVAsset'un ses parçasını kullanmak iyi bir fikir değil.

AVAssetTrack* audioTrack = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; 

Bir videoframe almak ve readerOutput karşılık gelen ses örnekleri almak için nasıl

tip AVAssetReaderTrackOutput* ait olduğu o

CMSampleBufferRef sampleBuffer = [self.readerOutput copyNextSampleBuffer]; 
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 

aracılığıyla CADisplayLink-geri aramasında zaman damgası var? Ve nasıl oynanır?


Düzenleme:

Ben biraz etrafına baktı ve ben en iyi yaklaşım burada açıklanan kullanarak AudioToolbox.framework gelen AudioQueue kullanmak olacaktır, düşünüyorum: aynı zamanda bir var AVAssetReader and Audio Queue streaming problem

AVFoundation'da ses çalar: AVAudioPlayer. Ama ben tam olarak nasıl NSData bekler o initWithData -initializer veri iletmek bilmiyorum. Ayrıca benim durumum için en iyi seçim olduğunu sanmıyorum çünkü anladığım kadarıyla her yeni ses örneği için yeni bir AVAudioPlayer -insension yaratılması gerekecekti.

Başka önerileriniz var mı? AVAssetReaderTrackOutput'dan aldığım ham ses örneklerini çalmanın en iyi yolu nedir?

+0

Eğer herhangi bir yere bununla aldınız mı? – RyanSullivan

+0

Çözümüm, AVAssetReader ile filmi OpenGL için çerçeveler almak ve aynı zamanda bir AVAudioPlayer ile aynı film dosyasını tekrar açmak ve her ikisinin de eşzamanlı olarak başlatılmasını sağlamaktı. Güzel bir çözüm değil, ses ve video oldukça senkron. O zamandan beri daha iyi bir çözüm üzerinde çalışmak için zamanım olmadı. – j00hi

+0

Ayrıca AVAudioPlayer kullanıyorum ama ses senkronizasyonu çok iyi değil. Gerçek bir çözüme sahip olmak daha iyi olurdu. –

cevap

İlgili konular