2016-07-21 19 views
6

Tôi có một số AVPlayer đang tải phương tiện từ xa URL (HLS luồng) và đôi khi trình phát chưa bao giờ sẵn sàng phát, nhưng không có lỗi nào được hiển thị. Có nơi nào khác có thể có lỗi hoặc cách kiểm tra xem nó có đang tải AVPlayerItem không?AVPlayer chưa bao giờ sẵn sàng phát

Tôi có KVO cho tỷ lệ, trạng thái và khả năng phát lại có khả năng tiếp tục không bao giờ được gọi khi video không tải. Tôi đã thêm một nút để kiểm tra lỗi trên trình phát, mục trình phát và việc phát lại có thể theo kịp hay không. Các báo cáo nil, nil và false khi người chơi có vẻ bị kẹt. Có vẻ như ngẫu nhiên khi người chơi bị kẹt (từ chối tải vidoe), nó không xảy ra trên một video cụ thể.

Tôi có thể thực hiện các bước nào khác để gỡ lỗi vấn đề này? Có những nơi khác để kiểm tra lỗi hoặc trạng thái không?

Thông tin thêm kiểm tra: Playback đệm trống: đúng Playback đệm là đầy đủ: false

+0

Bạn có thực sự yêu cầu người chơi chơi không? – matt

+0

Vâng, tôi đã thêm một nút bổ sung để đảm bảo điều này đang diễn ra mà không có may mắn. Cùng một người chơi hoạt động trong các trường hợp khác, điều này thật lạ lùng. Chúng tôi đang thay đổi mục người chơi để sử dụng lại cho người chơi và các nhà quan sát được thêm vào mục mới, nhưng ghi lại trạng thái bằng nút cho biết KVO đang hoạt động chính xác, mục đó không bao giờ có khả năng theo dõi. –

+0

Bạn có thể đăng mã không? Điều này có xảy ra chỉ khi bạn trao đổi các mục của người chơi và cố gắng sử dụng lại người chơi không? – Msencenb

Trả lời

1

Giải pháp của chúng tôi trước khi sử dụng lại trình phát, chúng tôi đã giải phóng AVPlayer bằng cách sử dụng player.replaceCurrentItemWithPlayerItem(nil). Một số lý do thay thế mục hiện tại đôi khi gây ra sự cố. Chúng tôi cũng đảm bảo rằng video của chúng tôi đang tải theo thứ tự, thay vì tất cả cùng một lúc. Điều đó dường như đã giải quyết được vấn đề của chúng tôi.

1

Để có thể tải URL từ các máy chủ từ xa từ bên trong ứng dụng của bạn, bạn có để thêm video này info.plist của bạn

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>mydomain.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> 
      <false/> 
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSRequiresCertificateTransparency</key> 
      <false/> 
     </dict> 
    </dict> 
</dict> 

see the docs

Đừng thêm những dòng chính xác như tôi gõ. Định cấu hình chúng cho nhu cầu của bạn. Lưu ý rằng cấu hình mặc định của Apple dành cho iOS là mong đợi các kết nối https, không phải http. Bạn phải định cấu hình để cho phép http.

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