zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS中 MediaPlayer framework实现视频播放

ios 实现 视频 播放 Framework MediaPlayer
2023-09-14 08:59:40 时间

  iOS开发中播放音乐可以使用MPMusicPlayerController类来实现,播放视频可以使用MPMoviePlayerController和MPMoviePlayerViewController类来实现,同时MPMediaPickerController 类可以用于从系统媒体库中选择媒体播放。这几个类都包含与MediaPlayer.framework框架中。

这里主要介绍MediaPlayer.framework


指定根视图:


RootTableViewController *rootTVC = [[RootTableViewController alloc] initWithStyle:UITableViewStylePlain];   UINavigationController *rootNC = [[UINavigationController alloc] initWithRootViewController:rootTVC];   self.window.rootViewController = rootNC;  
           [self.tableView registerNib:[UINib nibWithNibName:@"TestCell" bundle:nil] forCellReuseIdentifier:@"testCell"];       self.dataSourceArray = [NSMutableArray array];              [self loadDataAndShow];  
    NSURL *url = [NSURL URLWithString:@"http://c.m.163.com/nc/video/list/V9LG4B3A0/y/1-20.html"];       NSURLRequest *request = [NSURLRequest requestWithURL:url];       [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {                      if (data != nil) {               NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];               NSArray *array = dict[@"V9LG4B3A0"];               for (NSDictionary *aDict in array) {                   TestModel *model = [[TestModel alloc] init];                   [model setValuesForKeysWithDictionary:aDict];                   [self.dataSourceArray addObject:model];               }                              [self.tableView reloadData];           } else {               NSLog(@"%@", [connectionError localizedDescription]);           }                  }];  
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section       return self.dataSourceArray.count;  
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath       TestCell *cell = [tableView dequeueReusableCellWithIdentifier:@"testCell" forIndexPath:indexPath];       TestModel *model = self.dataSourceArray[indexPath.row];       [cell.movieImageView sd_setImageWithURL:[NSURL URLWithString:model.cover]];              UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];       [cell.movieImageView addGestureRecognizer:tapGR];              return cell;  
    UIView *view = sender.view;       UITableViewCell *cell = (UITableViewCell *)view.superview.superview;       NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];       self.selectedIndexPath = indexPath;       TestModel *model = self.dataSourceArray[indexPath.row];       self.mpPVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:model.mp4_url]];              self.mpPVC.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 370);       [self.mpPVC.moviePlayer setScalingMode:MPMovieScalingModeAspectFill];       [self.mpPVC.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];       [cell addSubview:self.mpPVC.view];                
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath       return 370;  
    TestCell *cell = (TestCell *)[self.tableView cellForRowAtIndexPath:self.selectedIndexPath];       // 当前cell在tableView的坐标       CGRect rectInTableView = [self.tableView rectForRowAtIndexPath:self.selectedIndexPath];       CGRect rectInWindow = [self.tableView convertRect:rectInTableView toView:[self.tableView superview]];       self.selectedRect = CGRectMake(rectInTableView.origin.x, rectInTableView.origin.y, cell.movieImageView.bounds.size.width + 20, cell.movieImageView.bounds.size.height + 20);                     if ([self.mpPVC.moviePlayer isPreparedToPlay]) {           if (rectInWindow.origin.y  = -370 || rectInWindow.origin.y  = [UIScreen mainScreen].bounds.size.height) {               [UIView animateWithDuration:.5 animations:^{                                     self.mpPVC.view.frame = CGRectMake(self.view.bounds.size.width - 170, self.view.bounds.size.height - 170, 170, 170);                   [self.view.window addSubview:self.mpPVC.view];                   self.mpPVC.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;                                                     }];           } else {               self.mpPVC.view.frame = self.selectedRect;               [self.tableView addSubview:self.mpPVC.view];               self.mpPVC.moviePlayer.controlStyle = MPMovieControlStyleDefault;           }       }         
@property (nonatomic, copy) NSString *cover;   @property (nonatomic, copy) NSString *mp4_url;   @end   //.m   - (void)setValue:(id)value forUndefinedKey:(NSString *)key