2015-02-24 52 views
3

我試圖獲得在tableview中工作的vine類型視頻源。我希望視頻能像Vine和Instagram一樣在tableview單元格內一次播放一個視頻。XCode - 獲取視頻在像Vine和Instagram這樣的tableview單元格中播放

有誰知道如何做到這一點?我正在使用MPMoviePlayer。

感謝

---- ---- UPDATE

我已經得到了自動播放的號召性行動工作井(請參閱「玩這個一個」)時,每個表格單元格是在中心,但我無法讓多個MPMoviePlayers加載/停止/播放。

我在任何時候只需要一個視頻在其單元格中播放,但我似乎只能在第一個單元格播放視頻並且它不響應停止呼叫(請參閱'不要播放此視頻一個')。

下面是我的腳本的片段。唯一不工作的部分是讓視頻實際播放和停止。打電話和停止工作正常。

我有這個在我的CellForRow:

MPMoviePlayerViewController *videoPlayer; 

[videoPlayer.view removeFromSuperview]; 

videoPlayer = [[MPMoviePlayerViewController alloc] init]; 


int videoTag = 500+indexPath.row; 

[videoPlayer.view setTag:videoTag]; 

videoPlayer.moviePlayer.repeatMode = MPMovieRepeatModeOne; 

videoPlayer.moviePlayer.controlStyle = MPMovieControlStyleNone; 

videoPlayer.view.frame = CGRectMake(0, 0, 320, 320); 

[videoPlayer.view setBackgroundColor:[UIColor whiteColor]]; 

[playerView addSubview:videoPlayer.view]; 

我做這個調用正確的細胞在視圖中心:

- (void)scrollViewDidScroll:(UIScrollView *)theView{ 

UITableViewCell *cell = (UITableViewCell *) theView; 


CGPoint currentOffset = theView.contentOffset; 


for (UITableViewCell *cell in [videoTableView visibleCells]) { 

    NSIndexPath *indexPath = [videoTableView indexPathForCell:cell]; 

    int videoTag = 500+indexPath.row; 

    MPMoviePlayerViewController *videoPlayer = (MPMoviePlayerViewController *)[cell viewWithTag:videoTag]; 

    UILabel *test_label = (UILabel *)[cell viewWithTag:300]; 

    CGRect cellRect = [videoTableView convertRect:cell.bounds fromView:cell]; 



    int scrollPosition = currentOffset.y + 64; // 64px is the navigation bar height 

    int cellPosition = cellRect.origin.y; 



    if(scrollPosition > cellPosition-100 && scrollPosition < cellPosition+100) 
    { 
     test_label.text = [NSString stringWithFormat:@"Play this one" ]; 



     UIView *blankOut = (UIView *)[cell viewWithTag:200]; 

     UIView *playerView = (UIView *)[cell viewWithTag:201]; 

     UIImageView *videoCoverUp = (UIImageView *)[cell viewWithTag:202]; 


     [playerView.layer setCornerRadius:138]; 
     [playerView.layer setMasksToBounds:YES]; 


     if(_isPlaying!=true){ 

      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
      NSString *documentsDirectory = [paths objectAtIndex:0]; 
      NSString *path = [documentsDirectory stringByAppendingPathComponent:@"video.mp4"]; 

      NSData *video_data = _tableObjects[indexPath.row][9];// Where my video data is stored 

      [video_data writeToFile:path atomically:YES]; 

      NSURL *moveUrl = [NSURL fileURLWithPath:path]; 


      videoPlayer.moviePlayer.contentURL = moveUrl; 

      [videoPlayer.moviePlayer prepareToPlay]; 

      [videoPlayer.moviePlayer play]; 


      _isPlaying = true; 

      // Needed 
      [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
      [self setNeedsStatusBarAppearanceUpdate]; 

     } 




    } else { 

     test_label.text = [NSString stringWithFormat:@"Don't play this one" ]; 

     [videoPlayer.moviePlayer stop]; 
     [videoPlayer.moviePlayer setContentURL:[NSURL URLWithString:nil]]; 
     [videoPlayer.moviePlayer prepareToPlay]; 

     //[_videoPlayer.moviePlayer.view removeFromSuperview]; 

     _isPlaying = false; 

    } 


} 
} 
+0

是的,你可能會找到一些有想法的人。但如果你想獲得幫助,你需要做一些研究,實施一些事情,然後發佈,如果你遇到了錯誤或編碼障礙。有什麼搜索給你的「藤蔓教程ios」?你已經試過了什麼? :) – 2015-02-24 13:59:40

+0

嗨。我試過研究,但還沒有找到有用的東西。我已經使用當前的腳本更新了我的帖子,所以您可以使用我目前的功能。視頻不會播放或停止,但號召性用語正在發揮作用。 – CaptainJ 2015-02-24 14:18:38

+0

您是否解決了這個問題?我也遇到了與AVPlayer相同的問題 – Infaz 2015-07-27 06:11:49

回答

0

的MPMoviePlayer手動似乎來形容做什麼?

https://developer.apple.com/library/prerelease/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/index.html

它會顯示在右上角做。似乎你只需要一個帶有視圖的單元格供你添加電影播放器​​。

MPMoviePlayerController *player = 
[[MPMoviePlayerController alloc] initWithContentURL: myURL]; 
[player prepareToPlay]; 
[player.view setFrame: myView.bounds]; // player's frame must match parent's 
[myView addSubview: player.view]; 
// ... 
[player play]; 

根據評論,谷歌是你的朋友。必須有很多例子。

+1

我可以將視頻添加到一個單元中,但沒有問題,但似乎無法爲多個單元完成。我已經使用當前的腳本更新了我的帖子,所以您可以使用我目前的功能。視頻不會播放或停止,但號召性用語正在發揮作用。 – CaptainJ 2015-02-24 14:20:29

相關問題