2015-10-11 5 views
5

के बाद AVPlayer के साथ वीडियो चलाएं मैंने AVFoundation के साथ स्नैपचैट के समान कस्टम कैमरा बनाया है। तस्वीर पहलू काम करता है: एक तस्वीर ले लो और मैं तस्वीर प्रदर्शित करता हूं। अब मैं एक वीडियो लेने और वीडियो प्रदर्शित करने की कोशिश कर रहा हूं।AVClayureMovieFileOutput

मैंने एक सफल वीडियो फ़ाइल पर कब्जा कर लिया है, परीक्षण किया है और MPMoviePlayer के साथ काम करता है, लेकिन मैं इसे AVPlayer पर वापस चलाने में असमर्थ हूं।

- (void)takeVideoAction:(id)sender { 
    NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.mp4"]; 

    NSFileManager *manager = [[NSFileManager alloc] init]; 
    if ([manager fileExistsAtPath:outputPath]){ 
     [manager removeItemAtPath:outputPath error:nil]; 
    } 
    [movieFileOutput startRecordingToOutputFileURL:[NSURL fileURLWithPath:outputPath] recordingDelegate:self]; 
} 

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error{ 


      AVURLAsset *asset = [AVURLAsset URLAssetWithURL:outputFileURL options:nil]; 
      [asset loadValuesAsynchronouslyForKeys:@[@"tracks"] completionHandler:^{ 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSError *error = nil; 
       if([asset statusOfValueForKey:@"tracks" error:&error] == AVKeyValueStatusFailed){ 
        NSLog(@"error: %@", [error description]); 
       } 
       else{ 
        self.playerItem = [AVPlayerItem playerItemWithAsset:asset]; 
        self.player = [AVPlayer playerWithPlayerItem:self.playerItem]; 
        self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 
        self.playerLayer.frame = self.view.bounds; 
        [self.view.layer addSublayer:self.playerLayer]; 

        [self.player play]; 
       } 
      }); 
     }]; 
    } 

यह मेरा पहला उपयोग कर रहा है AVFoundation & AVPlayer। क्या यह संपत्ति लोड होने के बाद [self.player play] नहीं कर सकता है? मुझे आइटम की स्थिति AVPlayerItemStatusReadyToPlay होने की प्रतीक्षा करनी है?


त्रुटि: "। अनुरोध किया गया URL इस सर्वर पर नहीं मिला था" त्रुटि डोमेन = NSURLErrorDomain कोड = -1100

उत्तर

0

मैं वीडियो चलाने के लिए AVPlayerLayer का उपयोग कर रहा हूं। मैंने नीचे दिए गए कोड का इस्तेमाल किया और यह ठीक काम किया।

AVPlayer *avPlayerq = [AVPlayer playerWithURL:NSURL]; 
avPlayerq.actionAtItemEnd = AVPlayerActionAtItemEndNone; 
AVPlayerLayer *videoLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayerq]; 
videoLayer.frame= self.view.bounds; 
videoLayer.videoGravity=AVLayerVideoGravityResizeAspectFill; 
[self.view.layer addSublayer:videoLayer]; 
[avPlayerq play]; 

आशा है कि यह आपकी मदद कर सकता है।