2013-08-23 34 views
6

Tôi đang cố gắng loại bỏ một số lần truy cập hiệu năng của chuỗi chính xảy ra khi tôi phân bổ AVPlayer, AVPlayerItem và AVURLAsset trên chuỗi chính. Có ai có kinh nghiệm di chuyển phân bổ/phát hành các đối tượng này đến một chủ đề nền? Tương tự, một currentItem của AVPlayer có thể được đặt trên một hàng đợi nền?Tạo và hủy các lớp AVFoundation trên hàng đợi nền?

Trả lời

-1

Nói chung, nếu tài liệu không được ghi là an toàn trong tài liệu lớp học, bạn không nên sử dụng đối tượng của lớp đó trên nhiều luồng.

Thêm vào vấn đề, trong khi có lợi khi làm ít hơn trên sợi chính, phân bổ AVPlayer, AVPlayerItemAVURLAsset sẽ không thực sự là một nút cổ chai mà bạn cần phải lo lắng. Thay vào đó, bạn nên chạy các công cụ và tìm các vấn đề hiệu suất thực tế và tập trung vào những vấn đề đó.

+2

Tôi nhận thấy đây không phải là trường hợp. Phân bổ một mục AVPlayer với một URL có xu hướng làm chậm hiệu suất cuộn - ngay cả khi được thực hiện trên một chuỗi nền. Chính xác tại sao điều này xảy ra tôi vẫn chưa chắc chắn. – rob

+0

@rob là chính xác. Bạn có một hit đáng chú ý trong hiệu suất cuộn khi cố gắng để làm cho tất cả công việc này. Rob, bạn có bao giờ thực hiện bất kỳ tiến bộ nào về vấn đề này không? – user3344977

+0

@ user3344977 Tôi thấy rằng tôi có thể giảm thiểu nhưng không khắc phục hiệu suất cuộn bằng cách đặt tất cả mọi thứ tôi có thể có thể vào chủ đề nền. (Phân bổ AVAsset một mình đã lên đến 30ms trên iPhone của tôi 6.) Tôi cũng đã làm một thử nghiệm mà tôi đã sử dụng một video tối thiểu <1k và được tải trên thiết bị, và điều đó không có sự khác biệt - nghĩa là giảm kích thước tệp video và tải từ đĩa không cải thiện hiệu suất cuộn. Có vẻ như không thể tránh khỏi ~ 15ms khóa của sợi chính khi bắt đầu một bộ phim. Tôi vẫn không biết nó là gì - thời gian profiling không được nhiều giúp đỡ. – rob

2

Sau đây chắc chắn sẽ bị tổn thương di chuyển hiệu suất

  • Tạo AVPlayer, 10 fps thả
  • Thêm chơi AVPlayerLayer, 15 fps thả
  • Bắt đầu chơi, 15/25 fps thả
  • Tạm dừng chơi , 15 fps drop
  • Deallocate AVPlayer, 20 + fps thả

Tôi đã thử phân bổ AVPlayer từ một chuỗi nền, tuy nhiên, AVFoundation sẽ chuyển về chính và thực hiện phân bổ/khởi tạo từ chính. Cùng với chơi/tạm dừng.

Tôi có một số thành công với deallocating AVPlayer/AVPlayerItem trên một chủ đề nền. Về cơ bản bạn cần phải rõ ràng tham chiếu cuối cùng để AVPlayer từ chủ đề nền của bạn.

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