2015-09-29 17 views
18

tôi đang chơi một đoạn video trên tvOS sử dụng đoạn mã sau:AVPlayer lỗi khi chơi trên tvOS

NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mov"]; 
NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; 

self.player = [AVPlayer playerWithURL:fileUrl]; 
AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 

avPlayerLayer.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height); 
[view.layer addSublayer:avPlayerLayer]; 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(replayMovie:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil]; 

[self.player play]; 

Nhưng tôi nhận được lỗi sau

ERROR: >aqme> 718: MEMixerChannel::EnableProcessor: failed to open processor type 0x705f6571

Bất kỳ ý tưởng làm thế nào để sửa chữa nó ?

Trả lời

19

Bạn có đang chạy ứng dụng trong trình mô phỏng hoặc trên bộ công cụ phát triển Apple TV không?

Đối với tvOS, hầu hết các lỗi/sự cố liên quan đến AV mà tôi đã gặp chỉ xảy ra khi tôi sử dụng trình mô phỏng Apple TV - khi tôi chạy ứng dụng trên thiết bị thực, chúng có xu hướng biến mất.

+0

Vâng, tôi đang chạy trên trình mô phỏng. Tôi nghĩ rằng nó có thể là trường hợp. Đáng tiếc là tôi chưa có Applet TV để kiểm tra nó. Dù sao cũng cảm ơn. – Wojtek

+2

Có lỗi tương tự trong trình mô phỏng, hoạt động tốt trên thiết bị. – tagy22

+0

@Wojtek Bạn có thấy câu trả lời của tôi không? Tôi nhận được mã hoạt động tốt trong trình mô phỏng. – ABeanSits

4

Tôi nhận được video để tải và phát cục bộ trên trình mô phỏng. Tôi đã viết nó trong Swift nhưng bạn sẽ có thể dịch nó khá dễ dàng.

if let path = NSBundle.mainBundle().pathForResource("4", ofType:"mp4") { 
     let url = NSURL(fileURLWithPath: path) 
     let videoPlayer = AVPlayer(URL: url) 
     let playerLayer = AVPlayerLayer(player: videoPlayer) 
     playerLayer.frame = self.view.frame 
     self.view.layer.addSublayer(playerLayer) 
     videoPlayer.play() 
    } 

Hãy chắc chắn rằng fileUrl không nil là gì và cố gắng loại bỏ mã mà không cần thiết (như thông báo phần) vì vậy chúng tôi có thể suy ra phần nào là không.

Tôi đang sử dụng Xcode 7.1beta3.

1

Bạn không muốn phân lớp AVPlayerViewController. Từ the docs:

IMPORTANT

Do not subclass AVPlayerViewController. Overriding this class’s methods is unsupported and results in undefined behavior.

Thay vào đó, hãy sử dụng UIViewController thông thường và sau đó đính kèm chế độ xem AVPlayerViewController vào nó.

Sử dụng mã của @ AbeanSits (Tôi đang sử dụng RubyMotion, nhưng bạn có thể dịch sang Obj-C) đã hoạt động. Đây là phiên bản của tôi:

def viewDidAppear(_) 
    super 

    @player_controller = AVPlayerViewController.alloc.init 
    @player_controller.player = AVPlayer.alloc.initWithURL(current_url) 
    self.addChildViewController(@player_controller) 
    self.view.addSubview(@player_controller.view) 
    @player_controller.view.frame = self.view.frame 
    @player_controller.player.play 
    end 
Các vấn đề liên quan