2011-10-03 2 views
11

करने के लिए वीडियो मैं एक एनीमेशन आईपैड पर OpenGL का उपयोग तैयार करने के लिए एक वीडियो सिंक करने के लिए कोशिश कर रहा हूँ, और वहाँ दो बातें मैं कैसे करना है यकीन नहीं है कर रहे हैं:सिंक्रनाइज़ ओपन एनीमेशन

  1. वर्तमान में चल रहे वीडियो फ्रेम का पता लगाएं।
  2. सुनिश्चित करें कि ओपनजीएल ड्राइंग के वीडियो और अपडेट का अपडेट ठीक उसी समय होता है, क्योंकि थोड़ी सी सिंक समस्या दृश्य कलाकृतियों का कारण बन सकती है।
+0

:

NSURL *videoURL = [NSURL fileURLWithPath:@"your_url"]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; UIView *playerView = [[UIView alloc] initWithFrame:frame]; AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; [playerLayer setFrame:[[playerView layer] bounds]]; 

फिर एक AVSynchronizedLayer परत और यह सिंक playerLayer साथ बनाएँ:

आप इस तरह वीडियो प्लेयर बना सकते हैं? अंतर्निहित बंद वीडियो प्लेयर व्यू या कंट्रोलर का उपयोग करना, या क्या आप एवीएफउंडेशन के माध्यम से एक-एक करके फ़्रेम खींच रहे हैं और फिर उन्हें कहीं से दबा रहे हैं? – Tommy

+0

मैं MPMoviePlayerController के माध्यम से वीडियो चला रहा हूँ। इसके बाद मैं फ़्रेम नंबर प्राप्त करने के लिए फ़्रेमरेट के साथ फुलमेरबैकटाइम का उपयोग कर सकता हूं, लेकिन समस्या यह है कि वीडियो मेरे ओपनजी रेंडरर की तुलना में एक अलग फ़्रेमेट पर वापस खेल रहा है। क्या दोनों को सिंक करने का कोई तरीका है, ताकि मैं हमेशा वीडियो में प्रत्येक फ्रेम के शीर्ष पर अपनी ओपनजी परत प्रस्तुत करता हूं, अगले वीडियो फ्रेम को प्रस्तुत करने से पहले? – sinsro

+0

क्या आपको इसका समाधान मिला? मुझे एक ही समस्या है। –

उत्तर

3
नहीं

यकीन है कि यह काम करेगा, लेकिन इसके बजाय MPMoviePlayerController का उपयोग कर के आप एक AVPlayerAVSynchronizedLayer का उपयोग करें और उपयोग करें और AVPlayerLayer के एक साथ अपने ओपन परत समय सिंक्रनाइज़ करने के लिए कर सकता है। क्या इसका मतलब है कि आप वीडियो खेल रहे हैं द्वारा

AVSynchronizedLayer *syncLayer = [AVSynchronizedLayer synchronizedLayerWithPlayerItem:playerItem]; 
[syncLayer addSublayer:yourGlView.layer]; 

[playerView.layer addSublayer:playerLayer]; 
[playerView.layer addSublayer:syncLayer]; 

[self.view addSubview:playerView]; 
... 

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

  • कोई संबंधित समस्या नहीं^_^