使用 MoviePlayer 控制器在一个 UITableView 静态单元格中播放 .mp4

Posted

技术标签:

【中文标题】使用 MoviePlayer 控制器在一个 UITableView 静态单元格中播放 .mp4【英文标题】:Playing an .mp4 in one UITableView Static Cell with MoviePlayer Controller 【发布时间】:2013-11-08 22:49:30 【问题描述】:

我有一个带有静态单元格的 UITableView 控制器;第一个 UITableView 单元格有一个 UIButton,当按下它时,由于 MoviePlayer 控制器,它会播放视频。

我最初所做的是创建一个自定义 UITableView Cell 类,在其中我实现了 MPC,然后为按钮创建了一个 IBAction 以触发电影播放。当我这样做时,我收到错误:'NSInvalidArgumentException',原因:'* -[NSURL initFileURLWithPath:]: nil string parameter'

我之前没有将 MoviePlayerController 与 UITableView 一起使用。我做错了什么?

-(IBAction)playvideo  
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"my_mov1" ofType:@"mp4"]]; 
    MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
    [self presentMoviePlayerViewControllerAnimated:playercontroller];
    playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile;         
    [playercontroller.moviePlayer play]; 

【问题讨论】:

错误说参数为nil。你检查过字符串吗? 这就是我所拥有的:-(IBAction)playvideo NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"my_mov1" ofType:@"mp4"]]; MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; [self presentMoviePlayerViewControllerAnimated:playercontroller]; playercontroller.movi​​ePlayer.movi​​eSourceType = MPMovieSourceTypeFile; [playercontroller.movi​​ePlayer 播放];我还能如何检查字符串?感谢您的帮助, 确保 [[NSBundle mainBundle] pathForResource:@"my_mov1" ofType:@"mp4"] 不是 nil 【参考方案1】:

您的主捆绑包中不存在该视频。确保您有一个正确命名为 "my_mov1.mp4" 的视频,并确保将其复制到您的主包中。

您可以使用文件管理器检查文件是否存在

NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isDirectory;
NSString *filePath; // set your file path here;
BOOL fileExists = [fileManager fileExistsAtPath:filePath isDirectory:&isDirectory];

【讨论】:

谢谢!我明天要试试这个,看看它是否有效。我会告诉你。我确实将“复制捆绑资源”中的视频复制了两次,但我会再试一次。 我试过了,还是不行。另外,我现在似乎遇到了其他几个问题,这些问题可能值得提出一个全新的问题。

以上是关于使用 MoviePlayer 控制器在一个 UITableView 静态单元格中播放 .mp4的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch - MoviePlayer 永远不会超越“正在加载...”

IOS 开发人员,正在开发一个基本的 MoviePlayer 应用程序。无法使用导航栏停止播放视频

在 iPhone 3.0 SDK 中为 MoviePlayer 添加自定义控件

iOS Swift 在视图关闭时停止 MoviePlayer

旋转由 YouTube 链接自动创建的 MoviePlayer

无法使用 AVPlayerViewController 显示电影