2011-10-20 13 views
9

Tôi đang cố gắng tạo một trình phát HLS đơn giản để điều khiển phát lại và hiển thị trên màn hình phụ. Tôi đang sử dụng AVFoundation trên 10.7 để điều khiển phát lại. Tôi có thể tạo thành công AVPlayerItem và AVPlayer, nhưng tôi đang gặp sự cố thực sự khiến video hiển thị trong NSView.Không thể tải AVPlayerLayer để hiển thị video trong NSView

Tôi phải thú nhận tôi là người mới làm quen với Cocoa và đang phát triển từ iOS, vì vậy tôi có thể thiếu một vài thứ đơn giản. Tuy nhiên tôi đã dành 4-5 giờ cố gắng để có được điều này để làm việc, và tôi đã không thành công.

Khi tôi phát video từ AVPlayer, quá trình phát lại bắt đầu và tôi có thể nghe thấy âm thanh. Tuy nhiên, không có video nào hiển thị.

Tôi đã cố gắng làm cho nó đơn giản nhất có thể. Tôi có một NSViewController, nơi tôi thêm một lớp AVPlayerLayer vào lớp của chế độ xem đó:

AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 

Theo như tôi biết, đó là tất cả những gì tôi phải làm. Tuy nhiên, video không bao giờ xuất hiện trong chế độ xem.

Có ai đã thành công khi thêm AVPlayerLayer vào NSView không? Tài liệu AVFoundation cho thấy làm thế nào điều này có thể được thực hiện với một UIView, và tôi đã thử phương pháp đó cũng như không có may mắn trong NSView.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Trả lời

12

Thử gửi setWantsLayer: YES tới chế độ xem của bạn trước khi thêm lớp con.

[self.view setWantsLayer:YES]; 
AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
[playerLayer setFrame:self.view.bounds]; 
[self.view.layer addSublayer:playerLayer]; 
+0

Đó là nó. Tài liệu AVFoundation cho thấy cách thiết lập trên iOS bằng cách phân lớp UIView. Tuy nhiên, NSView không có layerClass, đó là một lý do khiến nó không hoạt động. Vì vậy, tôi đã phân loại một cách khác và đảm bảo thêm setWantsLayer và dường như nó hoạt động tốt! – kcharwood

+4

Trên iOS, có vẻ như không có thuộc tính/phương thức "wantslayer" – zakdances

+1

Ý tôi là trên iOS6. – zakdances