是什么URLWithString和NSURL的fileURLWithPath区别?(What is

2019-08-31 13:12发布

在我的代码必须使用URLWithString播放流媒体( HLS )视频和fileURLWithPath来播放本地视频。

什么是这两种方法之间的区别? 我应该如何使用单一的方法来播放这两部影片。

此外,我需要最后一帧显示为静止图像时HSL视频结束。 它现在显示黑屏何时结束。 我应该如何实现这一目标?

Answer 1:

+URLWithString:产生一个NSURL表示字符串作为给出。 因此字符串可能是@"http://www.google.com"和URL代表http://www.google.com

+fileURLWithPath:取的路径,而不是一个URL,并产生一个NSURL表示使用的路径file:// URL。 所以,如果你给它/foo/bar/baz的URL将代表file:///foo/bar/baz

当然,你可以手动构造一个文件URL字符串,并将其传递给+URLWithString:+fileURLWithPath:更容易使用时,你已经有一个路径,你不必应付逃避字符串,并将其胁迫到URL格式。



Answer 2:

类似的事情发生在我的应用程序,它使用AVAudioPlayer。 我试着用[NSURL URLWithString:path] ,发现它无法打开某些MP3文件。 我看着错误由像线[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] fileTypeHint:AVFileTypeMPEGLayer3 error:&error] ,但该错误只是nil

然而,它是由与替换URL解析[NSURL fileURLWithPath:path]

在这两种情况下,路path NSString * @"/var/mobile/Containers/Data/Application/4D96D4AE-2ED4-40B0-85D2-230E1AFA90E7/Documents/01-AudioTrack 01.mp3" 0x1457a8f0不过我不知道原因但现在我应该用谨慎[NSURL URLWithString:]

PS。 在NSURL参考文献,苹果如下表示:

重要的是创造了文件系统路径NSURL对象,请使用fileURLWithPath:isDirectory:代替。

这清楚地表明[NSURL fileURLWithPath:]应该用于打开文件,尽管[NSURL URLWithString]也适用于某些情况下。



文章来源: What is difference between URLWithString and fileURLWithPath of NSURL?