Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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 尝试播放(使用MPMoviePlayerViewController)我下载并存储在文件中的视频/歌曲时出现问题_Iphone_Ios_Video_Mpmovieplayercontroller - Fatal编程技术网

Iphone 尝试播放(使用MPMoviePlayerViewController)我下载并存储在文件中的视频/歌曲时出现问题

Iphone 尝试播放(使用MPMoviePlayerViewController)我下载并存储在文件中的视频/歌曲时出现问题,iphone,ios,video,mpmovieplayercontroller,Iphone,Ios,Video,Mpmovieplayercontroller,这是我的问题 我有一个mpmovieplayervewcontroller,可以播放网络上的一些视频。那部分有效 但为了以后在没有互联网连接的情况下播放,我将它们存储在手机上,并使用该代码 NSData * data = [NSData dataWithContentsOfURL:[self dataURL]]; NSArray * documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

这是我的问题

我有一个mpmovieplayervewcontroller,可以播放网络上的一些视频。那部分有效

但为了以后在没有互联网连接的情况下播放,我将它们存储在手机上,并使用该代码

    NSData * data = [NSData dataWithContentsOfURL:[self dataURL]];

    NSArray * documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * baseDocumentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;

    [data writeToFile:[baseDocumentPath stringByAppendingPathComponent:_itemId] 
       atomically:YES];
这部分没问题,如果我从手机中取出文件,我可以在iMac上播放这些文件

但在那之后当我

    NSArray * documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * baseDocumentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
    videoController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:[baseDocumentPath stringByAppendingPathComponent:file.itemId]]];
模态viewController中只有一个灰色窗口。我没有收到玩家的通知

有什么想法吗


谢谢。

有人找到了问题的原因

文件名没有扩展名(如.mp4),因此MPMovieController不会尝试读取它(对我来说这听起来很疯狂--)。如果我手动将.mp4添加到我的视频文件中。应用程序可以读取它。。。我将把每个文件的扩展名附加到它的名字后面


无论如何谢谢:)

我今天遇到了同样的问题

iOS似乎不会加载任何具有错误文件扩展名的媒体文件。我知道这是非常愚蠢的行为,因为我用随机名称(UUID)存储媒体文件

一个快速的解决方法是使用以下代码创建指向原始文件的符号链接,并为其提供正确的扩展名。现在iOS将很高兴地加载该文件

// Create a symlink for iOS as it won't load any files with the wrong extension
NSString *fixedFileName = [fileName stringByAppendingString:@".mp4"];
[[NSFileManager defaultManager] createSymbolicLinkAtPath:fixedFileName 
                                     withDestinationPath:fileName error:NULL];

希望有帮助。如果符号链接已经存在,我们只需忽略发生错误的事实。

NSLog()文件.itemId如果它显示了您的期望值,请尝试使用NSFileManager打开该文件,查看它是否是有效的文件路径&该文件已成功保存在那里。您可能还应该检查
数据writeToFile:atomically:
调用的输出,看看它是否保存正常。这是一个有效的文件路径,例如,我可以记录数据长度。我确信这是一个好文件。这是一个处理它的好方法。谢谢:)无论如何,这个应用程序现在已经交付,所以我只保存了带有扩展名的文件。就个人而言,我认为苹果公司依靠文件扩展名来确定其内容类型是非常愚蠢的。;)