2014-05-06 5 views
16

मैं AVPlayerItem और AVPlayer दस्तावेज़ों के माध्यम से देख रहा हूं और आइटम समाप्त होने पर कोई कॉलबैक नहीं लगता है। मैं उम्मीद कर रहा था कि कुछ प्रकार के प्रतिनिधि कॉलबैक होंगे जिनका हम उपयोग कर सकते हैं या AVPlayerActionAtItemEnd हमें लिखने के लिए एक कस्टम कार्रवाई प्रदान करेगा।यह पता लगाने के लिए कि AVPlayerItem कब खेलना समाप्त हो गया है?

एवीप्लेयर ने आइटम चलाने के दौरान यह पता लगाने का तरीका कैसे पता लगाया जा सकता है?

उत्तर

38

प्लेबैक समाप्त होने पर चेतावनी देने के लिए यह NSNotification का उपयोग करता है। अधिसूचना के लिए

रजिस्टर:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem]; 

विधि जब किया कॉल करने के लिए:

-(void)itemDidFinishPlaying:(NSNotification *) notification { 
    // Will be called when AVPlayer finishes playing playerItem 
} 
+0

आप उपयोग कर सकते हैं '[avPlayer CurrentItem]' अगर आप AVPlayerViewController – abhi1992

5

स्विफ्ट-ए-fied (संस्करण 3)

class MyVideoPlayingViewController: AVPlayerViewController { 

    override func viewDidLoad() { 
     // Do any additional setup after loading the view. 
     super.viewDidLoad() 

     let videoURL = URL(fileURLWithPath: Bundle.main.path(forResource: "MyVideo", 
                    ofType: "mp4")!) 
     player = AVPlayer(url: videoURL) 

     NotificationCenter.default.addObserver(self, 
              selector: #selector(MyVideoPlayingViewController.animationDidFinish(_:)), 
              name: .AVPlayerItemDidPlayToEndTime, 
              object: player?.currentItem) 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     player?.play() 
    } 

    func animationDidFinish(_ notification: NSNotification) { 
     print("Animation did finish") 
    } 

    deinit { 
     NotificationCenter.default.removeObserver(self) 
    } 

} 
+0

अच्छा जवाब का उपयोग लेकिन removeObserver (_ आह्वान करने के लिए सुनिश्चित हो: पर्यवेक्षक या किसी भी वस्तु addObserver में निर्दिष्ट से पहले वस्तु :): नाम चयनकर्ता: नाम: वस्तु : हटा दिया गया है। – pierre23

0

यह वह जगह है मैं कैसे किया यह।

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:AVPlayerItemDidPlayToEndTimeNotification object:player.currentItem]; 


- (void)movieFinishedCallback:(NSNotification*)aNotification 
{ 
    // [self dismissViewControllerAnimated:YES completion:Nil]; 
} 
संबंधित मुद्दे

 संबंधित मुद्दे