Подтвердить что ты не робот

В чем разница между URLWithString и файломURLWithPath из NSURL?

В моем коде я должен использовать URLWithString для воспроизведения потокового видео (HLS) и fileURLWithPath для воспроизведения локального видео.

В чем разница между этими двумя методами? Как использовать один метод для воспроизведения обоих видеороликов.

Также мне нужно показать последний кадр как неподвижное изображение, когда заканчивается видео HSL. Теперь он показывает пустой экран, когда он заканчивается. Как я должен это достичь?

4b9b3361

Ответ 1

+URLWithString: создает NSURL, который представляет строку как заданную. Таким образом, строка может быть @"http://www.google.com", а URL-адрес представляет http://www.google.com.

+fileURLWithPath: берет путь, а не URL, и создает NSURL, который представляет путь с использованием URL file://. Поэтому, если вы дадите /foo/bar/baz, URL будет представлять file:///foo/bar/baz.

Вы можете, конечно, создать строку URL файла вручную и передать ее в +URLWithString:, но +fileURLWithPath: проще использовать, когда у вас уже есть путь, так как вам не нужно иметь дело с побегом строки и принуждением его в формате URL.

Ответ 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 Apple заявила следующее:

ВАЖНО Чтобы создать объекты NSURL для путей к файловой системе, используйте fileURLWithPath: isDirectory: вместо этого.

который явно указывает [NSURL fileURLWithPath:], должен использоваться для открытого файла, хотя [NSURL URLWithString] также работает в некоторых случаях.