Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 视频播放失败-[NSURL initFileURLWithPath:]:nil字符串参数_Iphone_Ios_Video_Ios6 - Fatal编程技术网

Iphone 视频播放失败-[NSURL initFileURLWithPath:]:nil字符串参数

Iphone 视频播放失败-[NSURL initFileURLWithPath:]:nil字符串参数,iphone,ios,video,ios6,Iphone,Ios,Video,Ios6,我很难理解为什么这不起作用:/每次我运行项目时,应用程序崩溃,抛出一个“NSInvalidArgumentException”,原因:“*-[NSURL initFileURLWithPath::nil字符串参数” 我遵循了一个教程,我对这个非常陌生,它对他很有效,代码完全相同。。有人能解释发生了什么事吗 .h文件 #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> #import <QuartzC

我很难理解为什么这不起作用:/每次我运行项目时,应用程序崩溃,抛出一个“NSInvalidArgumentException”,原因:“*-[NSURL initFileURLWithPath::nil字符串参数”

我遵循了一个教程,我对这个非常陌生,它对他很有效,代码完全相同。。有人能解释发生了什么事吗

.h文件

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <QuartzCore/QuartzCore.h>

@interface FirstViewController : UIViewController {   
    MPMoviePlayerViewController *playerController;
}
-(IBAction)playVideo;
@end

其中唯一重要的部分是:

NSString *stringPath = [[NSBundle mainBundle] pathForResource:@"intro" ofType:@"MP4"];
NSURL *url = [NSURL fileURLWithPath:stringPath];
我假设在第二行中引发了异常。这意味着stringPath为零,如果文件intro.MP4实际上不在应用程序包中,就会出现这种情况

检查:

该文件存在于源代码的副本中

您的Xcode项目引用了该文件 如果是红色,则表示该文件实际上不存在

在Xcode中的目标中,查看构建阶段,并揭示复制捆绑资源构建阶段。该文件应该存在。如果不是,请按+按钮并选择它


库尔特的回答对我特别有用

在Xcode中的目标中,查看构建阶段,并揭示复制捆绑资源构建阶段。该文件应该存在。如果不是,请按+按钮并选择它

我的电影文件不见了。它以前肯定在那里,因为它在工作,然后就停了


我本想对库尔特的帖子发表评论,但不知道怎么做。我投了赞成票。

除此答案中提到的内容外,您还需要确保所引用的文件在构建目标中具有成员身份。您可以在文件检查器中指定此选项。这个答案解释了你的视频太长的原因。使用此代码,限制为30秒。您最好的选择是从url流式传输它。尝试播放一段短于30秒的视频,效果会很好

iOS 9.2、Xcode 7.2、ARC启用

我最近也遇到了这个问题。一定要照原作者的建议去做。对我来说,问题出在文件的实际名称上,见下文

NSString *pathForPuzzlePieceHitSound = [[NSBundle mainBundle] pathForResource:@"puzzle_piece_hit" ofType:@"m4a"];
NSURL *urlForPuzzlePieceHitSound = [NSURL fileURLWithPath:pathForPuzzlePieceHitSound];

AudioServicesCreateSystemSoundID((__bridge CFURLRef)urlForPuzzlePieceHitSound, &idForPuzzlePieceHitSound);
文件名:

@"puzzle_piece_hit"
其中包含使用此特定方法命名文件时非法的字符。我想你可以处理它,绕过这个问题,但是重命名文件更容易

我改名为:

@"puzzlePieceHit"
一切都很顺利


希望这对别人有帮助!干杯。

请确保在复制包资源中添加您正试图播放的音频文件

单击左侧项目导航器中的Xcode项目图标第一个 点击目标 点击构建阶段 转到复制捆绑资源 检查列表中是否有您的音频文件。 如果未添加,请点击+图标添加 构建并运行
在有人问Reece Darragh是否拥有我们正在使用的dev帐户之前。谢谢你的帮助谢谢你的回复。不幸的是,它还没有发布,我确保了你推荐的一切。intro.mp4现在肯定在捆绑包中了吗?我很困惑为什么这不是启动,还要检查你拼写的名称是否正确,包括大小写-你确定它是MP4而不是MP4吗?。您可能还想查看磁盘上的内置应用程序的内部,以查看文件是否位于它应该位于的位置。我已检查了.app文件,视频位于主文件夹中它应该位于的位置?我也试过在MP4上修改案例,但显然没有什么不同:嘿,当我在构建阶段添加视频文件时,效果非常好。谢谢
@"puzzlePieceHit"