2013-04-19 19 views
14

Trong mã của tôi, tôi phải sử dụng URLWithString để phát trực tuyến (HLS) video và fileURLWithPath để phát video địa phương.Sự khác nhau giữa URLWithString và fileURLWithPath của NSURL là gì?

Sự khác biệt giữa hai phương pháp này là gì? Tôi nên sử dụng phương thức đơn lẻ để phát cả hai video như thế nào.

Ngoài ra tôi cần hiển thị khung hình cuối cùng làm hình ảnh tĩnh khi số HSL kết thúc. Bây giờ nó hiển thị màn hình trống khi nó kết thúc. Làm thế nào tôi nên đạt được điều này?

+0

"Ngoài ra tôi cần hiển thị khung hình cuối cùng làm hình ảnh tĩnh khi video HSL kết thúc" Không liên quan đến phần đầu tiên của câu hỏi của bạn. Hỏi nó như một câu hỏi khác! Mua một tặng một. – matt

Trả lời

15

+URLWithString: tạo ra một NSURL đại diện cho chuỗi như đã cho. Vì vậy, chuỗi có thể là @"http://www.google.com" và URL đại diện cho http://www.google.com.

+fileURLWithPath: lấy đường dẫn chứ không phải URL và tạo ra một đường dẫn NSURL đại diện cho đường dẫn sử dụng URL file://. Vì vậy, nếu bạn cung cấp cho nó /foo/bar/baz URL sẽ đại diện cho file:///foo/bar/baz. Tất nhiên, bạn có thể xây dựng chuỗi URL của tệp theo cách thủ công và chuyển đến +URLWithString:, nhưng +fileURLWithPath: đơn giản hơn khi bạn đã có đường dẫn vì bạn không phải xử lý thoát chuỗi và ép nó vào Định dạng URL.

+4

Chỉ cần mở rộng ở phần cuối: URL của tệp không chỉ đơn thuần là đường dẫn có từ "tệp" bị kẹt ở mặt trước. Họ làm việc khá khác nhau, và không chắc rằng một con người sẽ đối phó một cách chính xác với những khác biệt. Máy tính. – matt

1

Điều tương tự cũng xảy ra trong ứng dụng của tôi sử dụng AVAudioPlayer. Tôi đã thử với [NSURL URLWithString:path] và phát hiện ra nó không mở được một số tập tin mp3. Tôi đã xem xét lỗi bằng một dòng như [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] fileTypeHint:AVFileTypeMPEGLayer3 error:&error], nhưng lỗi chỉ đơn giản là nil

Tuy nhiên, nó đã được giải quyết bằng cách thay thế url bằng [NSURL fileURLWithPath:path].

Trong cả hai trường hợp, đường dẫn path NSString * @"/var/mobile/Containers/Data/Application/4D96D4AE-2ED4-40B0-85D2-230E1AFA90E7/Documents/01-AudioTrack 01.mp3" 0x1457a8f0 Tôi vẫn không biết lý do nhưng bây giờ tôi nên cẩn thận khi sử dụng [NSURL URLWithString:].

PS. Trong tài liệu tham khảo NSURL, Apple đã nói như sau:

QUAN TRỌNG Để tạo đối tượng NSURL cho đường dẫn hệ thống tệp, hãy sử dụng fileURLWithPath: isDirectory: thay thế.

chỉ rõ rằng [NSURL fileURLWithPath:] nên được sử dụng để mở tệp mặc dù [NSURL URLWithString] cũng hoạt động đối với một số trường hợp.

Các vấn đề liên quan