2015-09-30 17 views
7

में यूआरएल से वीडियो नहीं चलाएगा। मैं एक यूवीवी के अंदर एक एवीप्लेयर एम्बेड करने और एक यूआरएल से एमपी 4 वीडियो फ़ाइल चलाने की कोशिश कर रहा हूं। समस्या मैं केवल एक काले रंग की खाली दृश्य प्राप्त है (स्क्रीनशॉट देखें)AVPlayer आईओएस 9

enter image description here

पिछले iOS संस्करण यह मेरे लिए काम किया है, लेकिन iOS9 के उन्नयन के बाद से मैं इस समस्या को मिला है। मैं निम्नलिखित है मेरी कार्यान्वयन फ़ाइल में

@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIView *viewPlayerContainer; 

जबकि:

@import AVFoundation; 
@import AVKit; 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; 

    NSURL *url = [NSURL URLWithString:@"http://techslides.com/demos/sample-videos/small.mp4"]; 

    AVURLAsset *asset = [AVURLAsset assetWithURL: url]; 
    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset: asset]; 

    AVPlayer * player = [[AVPlayer alloc] initWithPlayerItem: item]; 

    [playerViewController.view setFrame:CGRectMake(0, 0, _viewPlayerContainer.bounds.size.width, _viewPlayerContainer.bounds.size.width)]; 

    playerViewController.showsPlaybackControls = NO; 

    [_viewPlayerContainer addSubview:playerViewController.view]; 


    [player play]; 


} 

मैं यहाँ कुछ याद आ रही हूँ

मेरे ज फ़ाइल इस तरह दिखता है?

अग्रिम धन्यवाद!

+5

अनुप्रयोग परिवहन सुरक्षा हो सकता है। एक वीडियो लोड करने का प्रयास करें 'https:' और/या http://stackoverflow.com/questions/30731785/how-do-i-load-an-http-url-with-app-transport-security-enabled- इन-आईओएस-9 – ChrisH

+1

मैंने पहले ही कोशिश की है लेकिन सफलता के बिना – Granit

+0

आपके डीबगर में कुछ भी लॉग हो गया है? –

उत्तर

13
@implementation ViewController{ 
    AVPlayerViewController *playerViewController; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    playerViewController = [[AVPlayerViewController alloc] init]; 
} 

- (IBAction)playVideo:(id)sender { 
    NSURL *url = [NSURL URLWithString:@"http://techslides.com/demos/sample-videos/small.mp4"]; 

    AVURLAsset *asset = [AVURLAsset assetWithURL: url]; 
    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset: asset]; 

    AVPlayer * player = [[AVPlayer alloc] initWithPlayerItem: item]; 
    playerViewController.player = player; 
    [playerViewController.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.width)]; 

    playerViewController.showsPlaybackControls = YES; 

    [self.view addSubview:playerViewController.view]; 

    [player play]; 
} 
1

कारण वीडियो के चलते नहीं है केवल कारण tls संस्करण बहुत पुराना है HTTP के मामले में कृपया के रूप में देखते App Transport Security

+0

I पहले से ही मेरी जानकारी में आवश्यक कुंजी जोड़ने की कोशिश की है। प्लिस्ट लेकिन बिना सफलता के – Granit

1

आप तुम्हारा

playerViewController.player = player; 
+0

कोड की यह पंक्ति अभी भी खाली है। – shri

0

में कोड की इस पंक्ति याद कर रहे हैं बनाने AVPlayerViewController है इसे प्रस्तुत करने वाले व्यू कंट्रोलर की संपत्ति और फिर इसे ViewDidLoad के अंदर आवंटित करें।

0

यदि आप एक यूआरएल से वीडियो खेलना चाहते हैं तो आपको AVURLAsset का उपयोग करने की आवश्यकता नहीं है। जब आपके पास वीडियो या यूआरएल की संख्या हो तो आपको AVURLAsset का उपयोग करना चाहिए। (लेकिन दोनों तरीकों से काम करते हैं)

संदर्भ: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAsset_Class/index.html#//apple_ref/occ/cl/AVAsset

के बाद विधि ठीक काम करता है, यदि आप एक यूआरएल है।

NSURL *url = [NSURL URLWithString:@“<your_url_here>”]; 
AVPlayer *player = [[AVPlayer alloc] initWithURL: url]; 
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init]; 
controller.player = player; 
controller.delegate = self;// if you want to use delegates... 
controller.showsPlaybackControls=YES; 
controller.view.frame = self.view.frame; 
[self.view addSubview:controller.view]; 
[player play];