AVPlayer не будет воспроизводить видео с URL в iOS9
Я пытаюсь встроить AVPlayer в UIView и воспроизвести видеофайл mp4 с URL. Проблема в том, что я получаю только черный пустой вид (см. Скриншот)
В предыдущих версиях iOS это работало для меня, но после обновления до iOS9 у меня возникла эта проблема.
Мой файл.h выглядит так:
@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 ответов
@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];
}
Причина, по которой видео не воспроизводится, связана только с tls
версия слишком старая в случае HTTP
пожалуйста, смотрите приложение Транспортная безопасность
Вы пропустили эту строку кода в вашем
playerViewController.player = player;
Сделайте AVPlayerViewController как свойство контроллера представления, представляющего его, а затем разместите его внутри viewDidLoad.
Если вы хотите воспроизводить видео с одного URL, вам не нужно использовать AVURLAsset. Вы должны использовать AVURLAsset, когда у вас есть количество видео или URL. (Но оба способа работают)
Следующий метод работает нормально, если у вас есть один URL.
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];