Chúng tôi có một ứng dụng mà chúng tôi đang thực hiện để đáp ứng nhu cầu phát lại tệp video qua AVPlayer. Các tập tin cần phải được lưu trữ trên thiết bị của người dùng, nhưng cũng phải phát lại trong khi tải xuống.Tải xuống AVPlayer và video nâng cao với AVURLAssets
Hiện tại, chúng tôi đã xây dựng mô-đun tải xuống sử dụng thư viện ASIHTTPRequest để tải tệp video qua PHP (chúng tôi không muốn phương tiện được liên kết qua URL công khai) và ghi chúng vào đĩa không đồng bộ.
Sau đó, chúng tôi đã thiết lập AVPlayer theo AV Foundation Programming Guide, nhận tệp bằng AVURLAsset, tạo AVPlayerItem bằng nội dung, tạo AVPlayer với mục đó, sau đó đặt trình phát thành AVPlayerLayer. Trình phát chạy tốt với tệp video được tải xuống đầy đủ và cũng sẽ chạy tệp được tải xuống dần dần hoàn toàn trong trình mô phỏng.
Thật không may trên một thiết bị thực tế, hành vi của người chơi thay đổi, thay vào đó nó dường như tải video một lần và không cố lấy các gói mới từ đĩa. Kết quả là người chơi sẽ phát video và âm thanh đến điểm trong video đánh dấu tiến trình tải xuống là tại thời điểm nội dung được tải (ví dụ: nếu 2MB dữ liệu được lưu vào bộ đệm thì trình phát được tạo, trình phát sẽ chỉ phát đến dữ liệu 2MB). Bởi vì nó có tiêu đề của video, người chơi sẽ vui vẻ tiếp tục nghĩ rằng nó đang phát trong toàn bộ thời lượng của video, nhưng không có video nào khác được hiển thị trên màn hình.
Nếp nhăn cuối cùng là nếu video được chèn vào AVComposition và AVPlayer được tạo với điều đó, video tiến bộ sẽ phát tốt. Đây sẽ là một giải pháp tốt (và thỉnh thoảng là cần thiết cho ứng dụng của chúng tôi) ngoại trừ việc ứng dụng của chúng tôi yêu cầu video có thể phát trên Apple TV qua AirPlay, mà AVCompositions không có khả năng.
Có ai biết liệu có cách nào để phát liên tục tải xuống tệp video bằng AVPlayer được tạo từ AVURLAssets không? Có cách nào để buộc người chơi/playerItem đọc từ đĩa với AVURLCó phải cách nó có vẻ như với AVComposition thay vì dường như lưu bộ nhớ đệm video trong bộ nhớ không?
Cảm ơn!
Bạn đã từng làm việc thông qua vấn đề này chưa? Bạn đã bật phiên bản iOS nào và thay đổi hành vi này bằng (các) phiên bản gần đây hơn? –
Không, tôi vẫn không có giải pháp cho điều này ngoài việc sử dụng AVComposition. Chúng tôi đã sử dụng iOS 5.1 và 6.0 vào thời điểm đó và hành vi vẫn tiếp tục qua 6.1. –
@RobertNall Tôi đang cố gắng làm điều tương tự với AVComposition - bạn có thể xây dựng một chút chính xác cách bạn chèn video vào AVComposition không? Nếu trình phát đạt EOF, phát lại có tiếp tục sau khi có thêm dữ liệu được tải xuống không? –