2013-04-19 14 views
14

In meinem Code muss ich URLWithString verwenden, um Streaming (HLS) Video und fileURLWithPath zu spielen, um lokales Video abzuspielen.Was ist der Unterschied zwischen URLWithString und fileURLWithPath von NSURL?

Was ist der Unterschied zwischen diesen beiden Methoden? Wie soll ich einzelne Methode verwenden, um beide Videos abzuspielen.

Auch ich muss letzten Frame als Standbild zeigen, wenn HSL Video endet. Es zeigt jetzt einen leeren Bildschirm, wenn es endet. Wie soll ich das erreichen?

+0

"Ich muss auch das letzte Bild als Standbild anzeigen, wenn HSL-Video endet" Nicht im Zusammenhang mit dem ersten Teil Ihrer Frage. Stellen Sie es als eine andere Frage! Zwei zum Preis von einem. – matt

Antwort

15

+URLWithString: erzeugt eine NSURL, die die Zeichenfolge wie angegeben darstellt. Die Zeichenfolge könnte also @"http://www.google.com" lauten, und die URL steht für http://www.google.com.

+fileURLWithPath: nimmt einen Pfad, keine URL, und erzeugt einen NSURL, der den Pfad unter Verwendung einer file:// URL darstellt. Also, wenn Sie es /foo/bar/baz geben, würde die URL file:///foo/bar/baz darstellen.

Sie können natürlich eine Datei-URL-Zeichenfolge manuell erstellen und an +URLWithString: übergeben, aber +fileURLWithPath: ist einfacher zu verwenden, wenn Sie bereits einen Pfad haben, da Sie die Zeichenfolge nicht umgehen müssen und es zu a erzwingen URL-Format

+4

Nur um den letzten Teil zu erweitern: eine Datei URL ist nicht nur ein Pfad mit dem Wort "Datei" auf der Vorderseite stecken. Sie arbeiten ganz anders und es ist unwahrscheinlich, dass ein Mensch mit den Unterschieden richtig umgehen würde. Der Computer tut es. – matt

1

Ähnliches ist in meiner App passiert, die AVAudioPlayer verwenden. Ich versuchte mit [NSURL URLWithString:path] und fand heraus, dass es bestimmte mp3-Dateien nicht öffnen kann. Ich schaute in Fehler durch eine Zeile wie [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] fileTypeHint:AVFileTypeMPEGLayer3 error:&error], aber der Fehler war einfach nil

Allerdings wurde es durch Ersetzen der URL mit [NSURL fileURLWithPath:path] gelöst.

In beiden Fällen, der Pfad path NSString * @"/var/mobile/Containers/Data/Application/4D96D4AE-2ED4-40B0-85D2-230E1AFA90E7/Documents/01-AudioTrack 01.mp3" 0x1457a8f0 Noch weiß ich nicht den Grund, aber jetzt sollte ich vorsichtig sein mit [NSURL URLWithString:].

PS. In NSURL Referenzdokument, sagte Apple wie folgt:

WICHTIG NSURL Objekte für Dateisystempfade zu erstellen, verwenden fileURLWithPath: isDirectory: statt.

die [NSURL fileURLWithPath:] zeigt deutlich, sollte für offene Datei verwendet werden, obwohl [NSURL URLWithString] auch für einige Fälle funktioniert.

Verwandte Themen