Tôi có một số AVQueuePlayer
(rõ ràng là mở rộng AVPlayer
) sẽ tải danh sách phát phát trực tuyến âm thanh. Phát trực tuyến đều hoạt động tốt nhưng tôi muốn có chỉ báo hoạt động để hiển thị âm thanh của người dùng đang tải. Rắc rối là, tôi dường như không thể tìm thấy bất kỳ Thông báo nào như vậy trong AVQueuePlayer
(hoặc AVPlayer
) sẽ cho biết khi bộ đệm âm thanh đã tải xong/đã sẵn sàng phát (cũng không có vẻ là phương thức đại biểu). Có suy nghĩ gì không?AVQueuePlayer/AVPlayer tải thông báo?
6
A
Trả lời
26
Bạn sẽ phải sử dụng KVO để thực hiện việc này.
Đối với mỗi mục bạn đang thêm vào hàng đợi, bạn có thể quan sát thiết lập như thế này:
item_ = [[AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://somefunkyurl"]] retain];
[item_ addObserver:self forKeyPath:@"status" options:0 context:nil];
[item_ addObserver:self forKeyPath:@"playbackBufferEmpty" options:0 context:nil];
Bây giờ bạn có thể đánh giá tình trạng của mục đó trong phương pháp quan sát;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isKindOfClass:[AVPlayerItem class]])
{
AVPlayerItem *item = (AVPlayerItem *)object;
//playerItem status value changed?
if ([keyPath isEqualToString:@"status"])
{ //yes->check it...
switch(item.status)
{
case AVPlayerItemStatusFailed:
NSLog(@"player item status failed");
break;
case AVPlayerItemStatusReadyToPlay:
NSLog(@"player item status is ready to play");
break;
case AVPlayerItemStatusUnknown:
NSLog(@"player item status is unknown");
break;
}
}
else if ([keyPath isEqualToString:@"playbackBufferEmpty"])
{
if (item.playbackBufferEmpty)
{
NSLog(@"player item playback buffer is empty");
}
}
}
}
Các vấn đề liên quan
- 1. Cách hiển thị thông báo tải khi iFrame đang tải?
- 2. Cách nhận thông báo khi thông báo được thông báo
- 3. Thông báo tải Jquery Mobile 1.2RC-1 không hiển thị
- 4. ASP.NET - Hiển thị thông báo khi trang đang tải
- 5. Thông báo MD5 của bản tải xuống tiếp tục
- 6. Biểu tượng thông báo khi tải xuống tệp
- 7. Cách bỏ qua cảnh báo "Bạn đã mua thông báo này nhưng chưa được tải xuống"
- 8. Tải MSCAPI Java Keystore mà không cần tải khóa riêng (mã thông báo cứng)
- 9. Android: xóa thông báo khỏi thanh thông báo
- 10. Làm biểu tượng thông báo với số lượng thông báo
- 11. Thông báo Android- Hiển thị toàn bộ thông báo
- 12. Gửi thông báo tới trung tâm thông báo Mountain lion
- 13. Thông báo lớn trên web bất thườngĐược thông báo
- 14. Thứ tự thông báo NSNotification của thông báo quan sát
- 15. Xử lý thông báo đẩy
- 16. Thông báo cảnh báo Javascript Thay thế
- 17. Thông báo email Django
- 18. - thay đổi thông báo
- 19. Thông báo PHP
- 20. Tự động thông báo
- 21. Thông báo WPF
- 22. Thông báo email TFS
- 23. Plugin Thông báo Rails?
- 24. Thông báo đẩy Android
- 25. Thông báo cảnh báo scapy nhấn khi nhập mô-đun
- 26. Thông báo cập nhật ứng dụng Android
- 27. thông báo lỗi xác thực biểu mẫu mã thông báo không hiển thị
- 28. mở lại ứng dụng nền thông qua mục thông báo
- 29. Cải thiện thông báo lỗi thiếu dll
- 30. Vô hiệu hóa thông báo Gnome 3/cửa sổ bật lên/thông báo tích hợp
Bạn cũng có thể quan sát thuộc tính playbackBufferEmpty của đối tượng AVPlayerItem để phát hiện nếu/khi bộ đệm của bạn trống trong khi phát lại để bạn có thể hiển thị cảnh báo hoạt động hoặc cảnh báo 'đệm'. – reddersky
@virorum Điểm tốt, thêm rằng một trong những câu trả lời của tôi - ty! – Till
Bạn luôn có thể đưa ra bình luận của tôi nếu bạn thích nó ;-) – reddersky