2011-02-23 11 views
27

ऐप में यूट्यूब वीडियो बजाना आसान और अच्छी तरह से प्रलेखित है।ऐप में यूट्यूब वीडियो को आईफोन में सहेजें

कि के साथ दो समस्याएं हैं:

  1. , यूट्यूब खिलाड़ी बंद करने के बाद उपयोगकर्ता यह ऑनलाइन स्ट्रीमिंग के लिए प्रतीक्षा करने के लिए फिर
  2. घर पर ऑफ़लाइन (लोड वीडियो नहीं चला सकता है इसे फिर से खेलना चाहता है, तो सड़क पर देखने के लिए)

है किसी को भी कोड है: करने के लिए

  1. डाउनलोड यूट्यूब वीडियो दस्तावेज़ फ़ोल्डर और डाउनलोड की प्रगति को दिखाने के
  2. खेलने डाउनलोड किया गया वीडियो दस्तावेजों फ़ोल्डर से लोड हो रहा है फ़ाइल से (जिसका अर्थ है यहां तक ​​कि जब इंटरनेट से कनेक्ट नहीं)

उत्तर

1

मैं वीडियो खेल सकते हैं और यह पता लगाने की जहां अस्थायी फ़ाइल संग्रहीत किया जा रहा है होगा । यदि आप इसका उपयोग कर सकते हैं, तो इसे ऑफ़लाइन देखने के लिए कुछ दस्तावेज़ फ़ोल्डर में कॉपी करें।

+0

शॉन, यह कुछ सुझाव है। लेकिन कुछ चीनी ऐप में मैंने जो कार्यान्वयन देखा वह कस्टम प्रगति डाउनलोड दिखाता है और डाउनलोड के बाद किसी भी समय खेलने की अनुमति देता है, इसे पहले खेलने की ज़रूरत नहीं है। एक ही समय में कई डाउनलोड प्रगति हो सकते हैं। – Biko

+0

मेरे सैंडबॉक्स में (https://github.com/comonitos/youtube_video)। मैं दस्तावेज़ फ़ोल्डर में यूट्यूब से वीडियो डाउनलोड करता हूं। प्रगति दिखाने के लिए आप NSURLConnection प्रतिनिधि या ASIHTTPRequest (allseeing-i.com/ASIHTTPRequest) का उपयोग कर सकते हैं: 1- ऐप यूट्यूब यूआरएल प्राप्त कर रहा है। 2 ASIHTTPRequest || NSURLConnection - प्रगति दिखाने के साथ डाउनलोड करें। – comonitos

5

मुझे व्यक्तिगत रूप से पता नहीं है कि यूट्यूब वीडियो कैसे डाउनलोड करें (और कोड यहां एक जवाब देने के लिए बहुत बड़ा है)।

हालांकि, यहां एक पूर्ण यूट्यूब डाउनलोड उदाहरण है here। यह एक ओपन सोर्स यूट्यूब डाउनलोडर है जिसे लोडट्यूब कहा जाता है: here's the a link to the source code

+0

लिंक के लिए धन्यवाद - इससे मदद मिलेगी! – Biko

42

यूट्यूब से वीडियो डाउनलोड करने के लिए:

  1. URL से डाउनलोड करने के लिए जाओ, YouTube API या कोई अन्य विधि के माध्यम से।
  2. एक अस्थायी फ़ाइल पर NSOutputStream या NSFileHandle खोला गया (NSTemporaryDirectory() या आपके दस्तावेज़ निर्देशिका में एक अस्थायी फ़ाइल)।
  3. अपनी प्रगति पट्टी सेट करें और जो कुछ भी आपको करने की ज़रूरत है।
  4. URL से फ़ाइल लाने के लिए एक NSURLConnection आवंटित करें और प्रारंभ करें। निश्चित रूप से sendSynchronousRequest:returningResponse:error: का उपयोग न करें।
  5. connection:didReceiveResponse: प्रतिनिधि विधि में, प्रगति पट्टी के उचित अद्यतन के लिए डाउनलोड की जाने वाली डेटा की लंबाई पढ़ें।
  6. connection:didReceiveData: प्रतिनिधि विधि में, आउटपुट स्ट्रीम/फ़ाइल हैंडल में डेटा लिखें और आवश्यकतानुसार प्रगति पट्टी को अपडेट करें।
  7. connectionDidFinishLoading: या connection:didFailWithError: में, आउटपुट स्ट्रीम/फ़ाइल हैंडल बंद करें और अस्थायी फ़ाइल का नाम बदलें या हटाएं।

इसे वापस खेलने के लिए, बस NSURL के fileURLWithPath: का उपयोग एक यूआरएल दस्तावेज़ निर्देशिका में स्थानीय फ़ाइल की ओर इशारा करते बनाने के लिए और के रूप में आप किसी भी दूरस्थ वीडियो होगा यह खेलते हैं।

+0

ग्रेट उत्तर Anomie - मैं इसे एप करने की कोशिश करने जा रहा हूँ। – Biko

+1

@ बिको; उत्सुक नहीं होना चाहिए, लेकिन क्या यह काम करता है? – Jake

+0

मिरगे, https://github.com/iosdeveloper/MyTube से सफाई कोड में फंस गया - यह देखने का फैसला किया कि वहां उपयोग की गई व्यवस्था मजबूत है या नहीं। मैं उसके बाद Anomie समाधान की जांच करेंगे। – Biko

5

जांच इन परियोजनाओं -

https://github.com/iosdeveloper/MyTube
https://github.com/pvinis/mytube

इन निश्चित रूप से आपकी मदद करेंगे !!

+1

ऐप वीडियो डाउनलोड नहीं करता है। यदि मुझे कोड में जोड़ने के लिए कुछ भी याद आती है तो कृपया मुझे बताएं। – Warrior

6

यहाँ मेरी उदाहरण है: https://github.com/comonitos/youtube_video

मैं पीटर स्टीनबर्गर द्वारा PSYouTubeExtractor.h वर्ग इस्तेमाल किया यह यूट्यूब mp4 वीडियो URL प्राप्त करें और डाउनलोड करने और देखने की तुलना में कर सकते हैं नहीं है एक समस्या

NSURLConnection + NSNotificationCenter + PSYouTubeExtractor + NSMutableData

7

Ive इस परियोजना से कक्षाओं का प्रयोग किया: https://github.com/larcus94/LBYouTubeView यह मेरे लिए ठीक काम करता है। मैं यूट्यूब वीडियो डाउनलोड कर सकते हैं।

LBYouTubeExtractor *extractor = [[[LBYouTubeExtractor alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:(@"http://www.youtube.com/watch?v=%@"), self.videoID ]] quality:LBYouTubeVideoQualityLarge] autorelease]; 
[extractor extractVideoURLWithCompletionBlock:^(NSURL *videoURL, NSError *error) { 
    if(!error) { 
     NSLog(@"Did extract video URL using completion block: %@", videoURL); 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      NSData *data = [NSData dataWithContentsOfURL: videoURL]; 
      NSString *pathToDocs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
      NSString *filename = [NSString stringWithFormat:(@"video_%@.mp4"), self.videoID ]; 
      [data writeToFile:[pathTODocs stringByAppendingPathComponent:filename] atomically:YES]; 
      NSLog(@"File %@ successfully saved", filename); 
     }); 
    } else { 
     NSLog(@"Failed extracting video URL using block due to error:%@", error); 
    } 
}]; 

आप उपरोक्त पदों में वर्णित तकनीक का उपयोग कर डाउनलोड करने की प्रगति को दिखाने के कर सकते हैं:

मैं इस कोड का इस्तेमाल किया।

+1

बिल्कुल सही समाधान –

+0

बिल्कुल सही !!! – Trident

+0

@ पीटर, यह अब मेरे लिए काम नहीं कर रहा है। क्या आप कृपया मुझे बता सकते हैं कि यह अभी काम कर रहा है? –

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