URLWithString和NSURL的fileURLWithPath之间有什么区别?
在我的代码中,我必须使用URLWithString
播放stream( HLS
)video和fileURLWithPath
播放本地video。
这两种方法有什么区别? 我应该如何使用单一方法播放这两个video。
当HSL
video结束时,我还需要将最后一帧显示为静止图像。 它现在显示黑屏时,它结束。 我应该如何做到这一点?
+URLWithString:
产生一个表示给定string的NSURL
。 所以string可能是@"http://www.google.com"
,而URL则代表http://www.google.com
。
+fileURLWithPath:
获取一个path,而不是一个URL,并产生一个表示使用file://
URL的path的NSURL
。 所以如果你给它/foo/bar/baz
那么URL就代表file:///foo/bar/baz
。
您当然可以手动构build一个文件URLstring,并将其传递给+URLWithString:
+fileURLWithPath:
但是当您已经有一个path时, +fileURLWithPath:
更简单,因为您不必处理转义string并将其强制转换为url格式。
类似的事情发生在我的应用程序使用AVAudioPlayer。 我试过[NSURL URLWithString:path]
,发现它无法打开某些MP3文件。 我通过像[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] fileTypeHint:AVFileTypeMPEGLayer3 error:&error]
,但错误仅仅是nil
不过,通过用[NSURL fileURLWithPath:path]
replaceurl解决了这个问题。
在这两种情况下,pathpath NSString * @"/var/mobile/Containers/Data/Application/4D96D4AE-2ED4-40B0-85D2-230E1AFA90E7/Documents/01-AudioTrack 01.mp3" 0x1457a8f0
还是不知道原因但现在我应该小心使用[NSURL URLWithString:]
。
PS。 在NSURL参考文档中,苹果说如下:
重要要为文件系统path创buildNSURL对象,请使用fileURLWithPath:isDirectory:来代替。
这明确表示[NSURL fileURLWithPath:]
应该用于打开文件,尽pipe[NSURL URLWithString]
也适用于某些情况。