Tôi có ứng dụng iOS phát video từ luồng trực tiếp "playlist.m3u8" và tôi có trình phát tùy chỉnh được tạo bằng AVPlayer. Để xử lý các tương tác người dùng thông thường như quét, tôi cần lấy thời lượng của video, nhưng vì lý do nào đó trên iOS 4.3 sử dụng xcode 4.0 khi tôi gọi mã sau tôi nhận được CMTime khi chuyển đổi thành giây cho NaN - tôi biết những gì nó đang làm bởi vì CMTimeValue = 0 và CMTimeScale = 0 cung cấp cho NaN và CMTimeFlags = 17 thậm chí còn kỳ lạ hơn.iOS AVAsset.duration là số không cho phát trực tiếp HTTP nhưng hoạt động cho tiến trình
Dưới đây là đoạn code tôi sử dụng mà không phải là phức tạp ở tất cả:
AVPlayerItem *pItem = mPlayer.currentItem;
AVAsset* asset = pItem.asset;
CMTime d = asset.duration;
double duration = CMTimeGetSeconds(asset.duration);
Tôi cũng nên đề cập đến mà tôi làm theo dõi tình trạng của các danh sách nhạc bốc để chắc chắn rằng nó đã sẵn sàng trước khi tôi bắt đầu chơi/chà kỹ:
[mPlayer addObserver:self forKeyPath:@"currentItem.status" options:0 context:VideoPlaybackViewDelegateStatusContext];
Cảm ơn bạn đã giúp đỡ về những vấn đề này mà bất kỳ ai cũng có thể cung cấp.
Tôi quên đề cập rằng tính năng này hoạt động trong iOS 4.2 - cả trình mô phỏng và thiết bị. – Aaron