यहां मेरे कोड स्निपेट्स। पहले सेट अप के समय घोषित यह
@property (nonatomic, retain) AVSampleBufferDisplayLayer *videoLayer;
वीडियो परत
self.videoLayer = [[AVSampleBufferDisplayLayer alloc] init];
self.videoLayer.bounds = self.bounds;
self.videoLayer.position = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
self.videoLayer.videoGravity = AVLayerVideoGravityResizeAspect;
self.videoLayer.backgroundColor = [[UIColor greenColor] CGColor];
//set Timebase
CMTimebaseRef controlTimebase;
CMTimebaseCreateWithMasterClock(CFAllocatorGetDefault(), CMClockGetHostTimeClock(), &controlTimebase);
self.videoLayer.controlTimebase = controlTimebase;
CMTimebaseSetTime(self.videoLayer.controlTimebase, CMTimeMake(5, 1));
CMTimebaseSetRate(self.videoLayer.controlTimebase, 1.0);
// connecting the videolayer with the view
[[self layer] addSublayer:_videoLayer];
अधिक जानकारी के लिए परत
__block AVAssetReaderTrackOutput *outVideo = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:video outputSettings:dic];
if([assetReaderVideo startReading])
{
[_videoLayer requestMediaDataWhenReadyOnQueue: assetQueue usingBlock: ^{
while([_videoLayer isReadyForMoreMediaData])
{
CMSampleBufferRef *sampleVideo = [outVideo copyNextSampleBuffer];
[_videoLayer enqueueSampleBuffer:sampleVideo.data];
}
}];
}
करने के लिए वीडियो डेटा प्रदान: WWDC 2014 में सत्र 513 बहुत जानकारीपूर्ण है।
इस उत्तर में कोड के एक स्वैच्छिक अनुपलब्ध है, जैसा कि अगले उत्तर से संकेत दिया गया है। जैसा कि है, यह किसी के लिए काम नहीं करेगा। –
न केवल कोड गायब है, लेकिन यह गलत है। CMSampleBuffer के लिए कोई डेटा प्रॉपर्टी नहीं है, इसलिए sampleBuffer.data को कोई समझ नहीं आता है। –
डेटा को पढ़ने वाले आउटविडियो के माध्यम से दूसरे स्निपेट में डेटा प्रदान किया जाता है। आपको डब्ल्यूडब्ल्यूडीसी सत्र 513/2014 पहले देखना चाहिए ... – Karsten