2012-11-15 40 views
21

से एमपी 4 वीडियो फ़ाइल चलाने में असमर्थ तो मैं एक्सकोड में अपनी परियोजना में खींचा गया एक सरल परिचय एनीमेशन वीडियो फ़ाइल चलाने की कोशिश कर रहा हूं और इसलिए मेरे मुख्य बंडल से खेलने में सक्षम होना चाहिए, है ना? * न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से एप्लिकेशन समाप्त:: '- शून्य स्ट्रिंग पैरामीटर [NSURL initFileURLWithPath:] *'मेनबंडल

NSURL *urlString = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"introvideo" ofType:@"mp4"]]; 
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:urlString]; 
[player play]; 

मैं इस त्रुटि संदेश मिलता है:

इस कोड के साथ

कोई भी मदद महान होगी!

+0

सबसे पहले, मेरी समस्या यह है कि introvideo.mp4 फ़ाइल मुख्य बंडल में मौजूद नहीं था। सबसे दूसरा, मुझे अपने खिलाड़ी को वैश्विक वस्तु बनाने की ज़रूरत थी - इसने वीडियो को ठीक खेल दिया। सभी सुझावों के लिए धन्यवाद लोगों! – PinkFloydRocks

उत्तर

57

इसका मतलब है कि आपका कोड आपकी introvideo.mp4 फ़ाइल नहीं ढूंढ सकता है। सुनिश्चित करें कि आपने उस फ़ाइल को अपने बंडल में सफलतापूर्वक जोड़ दिया है। आप अपनी परियोजना की सेटिंग में जांच सकते हैं: कॉपी बंडल संसाधन। ofType: रिटर्न शून्य enter image description here

+0

आपके उत्तर के लिए धन्यवाद - मुझे कॉपी बंडल संसाधन कहां मिलेगा? क्या यह एक चेक बॉक्स है? यह अतीत में मेरे लिए कभी भी कोई समस्या नहीं रही है, इसलिए यह थोड़ी अजीब है कि अचानक यह अचानक पॉप अप हो गया। – PinkFloydRocks

+0

धन्यवाद - बंडल को मैन्युअल रूप से वीडियो जोड़ने से दुर्घटना ठीक हो गई! – PinkFloydRocks

+0

आपका स्वागत है। – sunkehappy

2
NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[[player view] setFrame:[self.view bounds]]; // Frame must match parent view 
[self.view addSubview:[player view]]; 
[player play]; 
[player release]; 
+0

ठीक है, इसलिए संसाधन को बंडल में कॉपी नहीं किया गया था और मैन्युअल रूप से फ़ाइल को जोड़ने के बाद क्रैश गायब हो गया था। लेकिन फ़ाइल चलाने के लिए अपने कोड का उपयोग वीडियो नहीं दिखाता है। यह सभी काले MPMoviePlayerController को कोई नियंत्रक के साथ दिखाता है - कोई विचार क्यों? – PinkFloydRocks

+0

क्या मुझे पता चलेगा कि आईओएस का कौन सा संस्करण आप उपयोग कर रहे हैं? – rehan

3

ऐसा नहीं है कि pathForResource लगता है। जांचें कि

  1. यह फ़ाइल वास्तव में "संसाधनों को कॉपी करें" निर्माण चरण में जोड़ दी गई है;
  2. आपने फ़ाइल के नाम पर गलती नहीं की - डिवाइस पर पथ केस-संवेदी हैं।
3

आपको यह जांचना होगा कि वह वीडियो आपके एप्लिकेशन के संसाधन बंडल में उपलब्ध है या नहीं।

जैसा कि आपने you getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter का उल्लेख किया है।

यह बस इंगित करता है कि समस्या संसाधनपैथ में है, इसका मतलब है कि संसाधन बंडल में ऐसी कोई फ़ाइल मौजूद नहीं है। यही कारण है कि pathForResourcenil पथ देता है।

आपको उस वीडियो फ़ाइल को फिर से रखना होगा और सुनिश्चित करें कि फ़ाइल संसाधन बंडल में मौजूद है।

फिर आपको Rehan के रूप में कोड के साथ एहेड जाना चाहिए।

NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]]; 

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    [[player view] setFrame:[self.view bounds]]; // Frame must match parent view 
    [self.view addSubview:[player view]]; 
    [player play]; 
    [player release]; 

मुझे आशा है कि यह आपके लिए लायक हो सकता है।

धन्यवाद

4

आपका कोड सही नहीं है। कृपया निम्नलिखित के अनुसार बदलें। फिर भी अपने वीडियो को अपने बंडल संसाधनों में कॉपी करें।

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
            pathForResource:@"MacBook Pro with Retina Display" ofType:@"m4v"]]; 
MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc] 
               initWithContentURL:url]; 
[self presentMoviePlayerViewControllerAnimated:playercontroller]; 
playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[playercontroller.moviePlayer play]; 
[playercontroller release]; 
playercontroller = nil; 
NSLog(@"Video is Playing"); 
1

मैंने परियोजना में एक संपूर्ण "ध्वनि" निर्देशिका डाली है, और इसे "कॉपी बंडल संसाधन" अनुभाग में जोड़ा है। यह ठीक काम कर रहा था, लेकिन फिर यह दुर्घटनाग्रस्त हो गया।

फिक्स निर्देशिका नाम को फ़ाइल नामों में प्रीपेड करना था। उदाहरण के लिए, इस नहीं किया काम:

SKAction.playSoundFileNamed("crash.caf", waitForCompletion: false) 

...

SKAction.playSoundFileNamed("Sounds/crash.caf", waitForCompletion: false) 
2

Xcode 9

यहाँ एक अद्यतन छवि है: लेकिन इस काम किया है।

पर जाएं चरण बनाएं> कॉपी बंडल संसाधन और देखें कि आपकी फ़ाइल वहां है या नहीं। यदि ऐसा नहीं है तो आप इसे "+" बटन दबाकर जोड़ सकते हैं।

सभी की

enter image description here