iPhone视频播放项目开发

移动开发 iOS
本文介绍的iPhone视频播放项目开发,本文通过详细的代码来实现iphone中视频的播放。来看详细内容。

iPhone视频播放项目开发是本文要介绍的内容,我感觉iphone视频的播放一直是一个软肋,我在之前因为做了一个iphone视频的项目所以其有所研究。 大家应该知道!3.2后iphone视频方面增加了和多通知!这在之前是没有的,于是多了很多功能,我感觉这方面还是不错的!

下面一步一步的讲讲视频

首先展示一下代码:

  1. -(void) playMovieWithSDK: (NSURL*) movieUrl  
  2. {  
  3. if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 3.2)  
  4. {  
  5. self.view.backgroundColor = [UIColor redColor];  
  6. mSdk4Player = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];  
  7. mSdk4Player.navigationController.navigationBar.tag = 1003;  
  8. [self.navigationController.navigationBar setNeedsDisplay];  
  9. if (mSdk4Player)  
  10. {  
  11. mSdk4Player.moviePlayer.shouldAutoplay = YES;  
  12. [self presentMoviePlayerViewControllerAnimated:mSdk4Player];  
  13. mSdk4Player.moviePlayer.scalingModeMPMovieScalingModeAspectFit;    
  14. [mSdk4Player.moviePlayer play];  
  15. [mSdk4Player release];  
  16. backgroundIamge = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];  
  17. [backgroundIamge setImage:[UIImage imageNamed:@"playBg.png"]];  
  18. [mSdk4Player.view addSubview:backgroundIamge];  
  19. backgroundIamge.hidden = YES;  
  20. UIDevice *device = [UIDevice currentDevice];  
  21. if (device.orientation == UIInterfaceOrientationPortrait || device.orientation == UIInterfaceOrientationPortraitUpsideDown)  
  22. {  
  23. backgroundIamge.center = CGPointMake(160, 240);  
  24. }  
  25. else if(device.orientation == UIInterfaceOrientationLandscapeLeft||device.orientation == UIInterfaceOrientationLandscapeRight)  
  26. {  
  27. backgroundIamge.center = CGPointMake(240, 160);  
  28. }  
  29. else   
  30. {  
  31. backgroundIamge.center = CGPointMake(160, 240);  
  32. }  
  33. [[NSNotificationCenter defaultCenter]  
  34. addObserver: self  
  35. selector: @selector(movieFinishedCallback:)  
  36. name: MPMoviePlayerPlaybackDidFinishNotification  
  37. object: mSdk4Player.moviePlayer];  
  38. [[NSNotificationCenter defaultCenter]  
  39. addObserver: self  
  40. selector: @selector(movieReadyToPlay:)  
  41. name: MPMovieMediaTypesAvailableNotification  
  42. object: nil];  
  43. [[NSNotificationCenter defaultCenter]  
  44. addObserver: self  
  45. selector: @selector(addMoviePicture:)  
  46. name: MPMoviePlayerNowPlayingMovieDidChangeNotification  
  47. object: nil];  
  48. [[NSNotificationCenter defaultCenter]  
  49. addObserver: self  
  50. selector: @selector(changeAddedPictureSize:)  
  51. name: UIApplicationWillChangeStatusBarOrientationNotification  
  52. object: nil];  
  53. }  
  54. // backgroundIamge.center = CGPointMake(240, 160);  
  55. }  
  56. else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) //sdk 3.0 播放器   
  57. {  
  58. MPMoviePlayerController* mSdk3player = [[MPMoviePlayerController alloc] initWithContentURL: movieUrl];  
  59. mSdk3player.scalingMode = MPMovieScalingModeAspectFit;  
  60. [[NSNotificationCenter defaultCenter]  
  61. addObserver: self  
  62. selector: @selector(movieFinishedCallback:)  
  63. name: MPMoviePlayerPlaybackDidFinishNotification  
  64. object: mSdk3player];  
  65. [mSdk3player play];  
  66. }  
  67. }  
  68. //播放电影  
  69. -(void) playMovie  
  70. {  
  71. NSURL *movieUrl = [NSURL URLWithString:_movieString];  
  72. if([movieUrl scheme])  
  73. {  
  74. [self playMovieWithSDK:movieUrl];  
  75. //此处的将最新的movie提到最上面是在数据库中进行的  
  76. [self checkHisState];  
  77. [self setHistory];  
  78. }  
  79. else   
  80. {  
  81. UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"" message: @"" delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil];  
  82. [alert show];  
  83. [alert release];  
  84. }  
  85. }  
  86. // 通知释放播放器  
  87. -(void) movieFinishedCallback:(NSNotification*)aNotification  
  88. {  
  89. MPMoviePlayerController* theMovie=[aNotification object];  
  90.     [[NSNotificationCenter defaultCenter] removeObserver:self  
  91.                                                     name:MPMoviePlayerPlaybackDidFinishNotification  
  92.                                                   object:theMovie];  
  93. _detailViewController = [[DetailViewController alloc]initWithNibName:nil bundle:nil messageData:_message index:index];  
  94. [_detailViewController.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@""]];  
  95. [self.navigationController pushViewController:_detailViewController animated:NO];  
  96. }  
  97. -(void) addMoviePicture:(NSNotification*)aNotification  
  98. {  
  99. backgroundIamge.hidden = NO;   
  100. }  
  101. -(void) movieReadyToPlay:(NSNotification*)aNotification  
  102. {  
  103. backgroundIamge.hidden = YES;  
  104.     [[NSNotificationCenter defaultCenter] removeObserver:self  
  105.                                                     name:MPMovieMediaTypesAvailableNotification  
  106.                                                   object:nil];  
  107. }  
  108. -(void) changeAddedPictureSize:(NSNotification*)aNotification  
  109. {  
  110. UIDevice *device = [UIDevice currentDevice];  
  111. if (device.orientation == UIInterfaceOrientationPortrait || device.orientation == UIInterfaceOrientationPortraitUpsideDown)  
  112. {  
  113. backgroundIamge.center = CGPointMake(160, 240);  
  114. }  
  115. else if(device.orientation == UIInterfaceOrientationLandscapeLeft||device.orientation == UIInterfaceOrientationLandscapeRight)  
  116. {  
  117. backgroundIamge.center = CGPointMake(240, 160);  
  118. }  
  119. else   
  120. {  
  121. backgroundIamge.center = CGPointMake(160, 240);  
  122. }  

通过以上代码我想大家应该对iphone视频的播放有所了解了!我重点说几点吧:

1、我在播放视频的时候加上了对手机版本的判断,这是因为很多通知在3.2 之前的版本是不能用的。

2、在代码中我加入了大量的通知,我一个一个说来:

(1) [[NSNotificationCenter defaultCenter]

  1. addObserver: self  
  2. selector: @selector(movieFinishedCallback:)  
  3. name: MPMoviePlayerPlaybackDidFinishNotification  
  4. object: mSdk4Player.moviePlayer]; 

上面这个通知是在视频播放完的时候触发的,就是说你想在播放完视频的时候想做什么工作可以在方法中写入。

(2) [[NSNotificationCenter defaultCenter]

  1. addObserver: self  
  2. selector: @selector(movieReadyToPlay:)  
  3. name: MPMovieMediaTypesAvailableNotification  
  4. object: nil]; 

上面这个通知是在准备播放视频触发的。

(3) [[NSNotificationCenter defaultCenter]

  1. addObserver: self  
  2. selector: @selector(addMoviePicture:)  
  3. name: MPMoviePlayerNowPlayingMovieDidChangeNotification  
  4. object: nil]; 

上面这个通知是在加载视频之前还没有播放视频之前触发的。

(4)[[NSNotificationCenter defaultCenter]

  1. addObserver: self  
  2. selector: @selector(changeAddedPictureSize:)  
  3. name: UIApplicationWillChangeStatusBarOrientationNotification  
  4. object: nil]; 

上面这个通知是设备发生重力变换的时候触发的。

通过以上几个通知基本上因该满足一个不错的,可观赏性的视频播放器了。大家可以试试!!

小结:iPhone视频播放项目开发的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-20 16:21:20

iPhone 视频 播放器

2011-08-17 14:57:31

iPhone应用视频播放

2011-08-08 18:19:09

iPhone音频播放

2011-08-08 10:23:41

iPhone 流播放 文件

2011-08-09 14:42:07

iPhonePCM播放器

2011-07-21 15:49:27

iPhone 模拟器 视频

2011-07-18 15:32:14

iPhone 录音 播放

2021-10-18 14:57:25

鸿蒙HarmonyOS应用

2011-07-27 09:50:31

iPhone AVAudioPla 音频

2011-08-02 16:58:15

iPhone AVAudioPla 音频播放

2011-07-08 20:32:57

iPhone midi

2011-07-22 15:59:15

iPhone 声音 文件

2011-08-17 16:12:20

iPhone应用程序

2011-07-06 17:53:40

iPhone SDK Xcode

2022-08-16 17:37:06

视频播放器鸿蒙

2014-10-20 09:55:02

2011-07-25 18:02:51

iPhone LibFetion 移植

2011-02-01 17:32:38

App StoreiPhone手机游戏

2021-06-27 17:42:35

全链路

2011-07-08 10:58:47

点赞
收藏

51CTO技术栈公众号