2013-05-12 17 views
5

मैं एक वीडियो चलाने की कोशिश कर रहा हूं इसलिए मुझे ट्यूटोरियल से कुछ कोड मिला लेकिन यह काम नहीं करेगा।आईओएस एवीप्लेयर वीडियो नहीं चलाएगा

- (void) viewDidAppear:(BOOL)animated 
{ 
    avAsset = [AVAsset assetWithURL:[NSURL URLWithString:filePath]]; 
    avPlayerItem =[avPlayerItem initWithAsset:avAsset]; 
    avPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem]; 
    avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer]; 
    [avPlayerLayer setFrame:self.view.frame]; 
    [self.view.layer addSublayer:avPlayerLayer]; 
    [avPlayer seekToTime:kCMTimeZero]; 
    [avPlayer play]; 

} 

मैं नहीं जानता कि क्या गलत है यह ny त्रुटियों यह सिर्फ काली स्क्रीन देता है नहीं देता है:

यहाँ कोड मैं का उपयोग है। धन्यवाद।

उत्तर

35

अरे लोग धन्यवाद s1mon और मैट आपकी मदद

यहाँ के लिए नए कोड यह किसी की मदद हो सकता है डी

+0

साझा करने के लिए धन्यवाद .. ** यह पूरी तरह से काम करता है ** – swiftBoy

+0

मैंने अपने ऐप में एक ही कोड को लागू करने का प्रयास किया है, मैं सर्वर से आने वाले सभी वीडियो दिखाने के लिए टेबलव्यू का उपयोग कर रहा हूं, मेरे पास वीडियो के लिए यूआरएल है, जब मैं इसे पास कर रहा हूं सेल, इसे खेलने से नहीं, कृपया मदद करें ... – ravinder521986

+0

दिलचस्प है कि मैंने बैकग्राउंड रंग को लाल रंग में कैसे सेट किया है जैसा कि आपने स्क्रीन पर स्क्रीन को दिखाई देने के लिए अपने टिप्पणी कोड में किया था। – ninjaneer

3

मुझे लगता है कि आप इस पंक्ति में AVPlayerItem का एक उदाहरण बनाने के लिए भूल गया:

avPlayerItem =[avPlayerItem initWithAsset:avAsset]; 

यह सिर्फ initWithAsset:avPlayerItem के लिए भेजता है (जब इस विधि कहा जाता है जो शायद नहीं के बराबर है)। इस तरह इसे बदलने एक नया AVPlayerItem का दृष्टांत को जो आप तो avPlayerItem को असाइन कर सकते प्रयास करें,:

avPlayerItem = [[AVPlayerItem alloc] initWithAsset:avAsset]; 
+0

यह भी एक समस्या थी: डी धन्यवाद: डी –

12

यह वास्तविक समस्या नहीं हो सकता है, लेकिन यह निश्चित रूप से कोड गलत है:

[NSURL URLWithString:filePath] 

पहले सब, फ़ाइल पथ से शुरू न करने का प्रयास करें; एक फ़ाइल यूआरएल से शुरू करें। इस तरह, कोई रूपांतरण की आवश्यकता नहीं है। लेकिन अगर आप किसी फ़ाइल पथ से किसी URL पर रूपांतरण निष्पादित करना चाहते हैं, तो fileURLWithPath:isDirectory: का उपयोग करें। एक फ़ाइल यूआरएल एक विशेष प्रकार का जानवर है और जब आप किसी पथ से परिवर्तित होते हैं तो आपको विशेष रूप से एक के लिए पूछना चाहिए।

- (void) viewDidAppear:(BOOL)animated 
{ 
    avAsset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filePath]]; 
    avPlayerItem =[[AVPlayerItem alloc]initWithAsset:avAsset]; 
    avPlayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem]; 
    avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:avPlayer]; 
    [avPlayerLayer setFrame:self.view.frame]; 
    [self.view.layer addSublayer:avPlayerLayer]; 
    //[avPlayerLayer setBackgroundColor:[[UIColor redColor]CGColor]]; 
    [avPlayer seekToTime:kCMTimeZero]; 
    [avPlayer play]; 

} 

THXXXXXXXX लोग:

+0

जाहिर है कि समस्या थी: डी Thankssssssssss: डी –

+0

यह हास्यास्पद है। 'URLWithString' और' fileURLWithPath 'दोनों' वैध 'NSURL' उदाहरण बनाएं। क्यों पूर्व 'एवीप्लेयर' के साथ काम नहीं करता है मुझे कोई समझ नहीं आता है। – Legoless

1

उन लोगों के लिए एक swift 2.0 version की तलाश में, यहाँ है मेरे लिए क्या काम किया चीयर्स।

import Foundation 
import UIKit 
import AVKit 

class VideoViewController: AVPlayerViewController { 

    override func viewDidAppear(animated: Bool) { 
     self.setupVideoPlayerView() 
    } 
    private func setupVideoPlayerView() 
    { 
     let path = "HTTP_VIDEO_URL_HERE" 
     let nsURL = NSURL(string: path) 
     let avAsset = AVAsset(URL: nsURL!) 
     let avPlayerItem = AVPlayerItem(asset: avAsset) 

     let avPlayer = AVPlayer(playerItem: avPlayerItem) 
     let avPlayerLayer = AVPlayerLayer(layer: avPlayer) 

     avPlayerLayer.frame = self.view.frame 
     self.view.layer.addSublayer(avPlayerLayer) 

     self.player = avPlayer 

     self.player!.seekToTime(kCMTimeZero) 
     self.player!.play() 

    } 

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