18

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

这两种方法有什么区别?我应该如何使用单一方法播放两个视频。

我还需要在HSL视频结束时将最后一帧显示为静止图像。它现在结束时显示空白屏幕。我应该如何实现这一目标?

4

2 回答 2

20

+URLWithString:产生一个NSURL表示给定字符串的一个。所以字符串可能是@"http://www.google.com"并且 URL 代表http://www.google.com.

+fileURLWithPath:接受路径,而不是 URL,并NSURL使用 URL 生成表示路径的file://。因此,如果你给它/foo/bar/bazURL 将代表file:///foo/bar/baz.

您当然可以手动构造一个文件 URL 字符串并将其传递给+URLWithString:,但是+fileURLWithPath:当您已经有路径时使用起来更简单,因为您不必处理转义字符串并将其强制转换为 URL 格式。

于 2013-04-19T04:53:51.877 回答
3

类似的事情发生在我使用 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 Reference 文档中,Apple 表示如下:

重要要为文件系统路径创建 NSURL 对象,请改用 fileURLWithPath:isDirectory:。

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

于 2015-03-14T16:53:51.037 回答