Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. import AVFoundation
  2.  
  3.  
  4. extension AVPlayerItem {
  5.  
  6. enum TrackType {
  7. case subtitle
  8. case audio
  9.  
  10. /**
  11. Return valid AVMediaSelectionGroup is item is available.
  12. */
  13. fileprivate func characteristic(item:AVPlayerItem) -> AVMediaSelectionGroup? {
  14. let str = self == .subtitle ? AVMediaCharacteristicLegible : AVMediaCharacteristicAudible
  15. if item.asset.availableMediaCharacteristicsWithMediaSelectionOptions.contains(str) {
  16. return item.asset.mediaSelectionGroup(forMediaCharacteristic: str)
  17. }
  18. return nil
  19. }
  20. }
  21.  
  22. func tracks(type:TrackType) -> [String] {
  23. if let characteristic = type.characteristic(item: self) {
  24. return characteristic.options.map { $0.displayName }
  25. }
  26. return [String]()
  27. }
  28.  
  29. func selected(type:TrackType) -> String? {
  30. guard let group = type.characteristic(item: self) else {
  31. return nil
  32. }
  33. let selected = self.selectedMediaOption(in: group)
  34. return selected?.displayName
  35. }
  36.  
  37. func select(type:TrackType, name:String) -> Bool {
  38. guard let group = type.characteristic(item: self) else {
  39. return false
  40. }
  41. guard let matched = group.options.filter({ $0.displayName == name }).first else {
  42. return false
  43. }
  44. self.select(matched, in: group)
  45. return true
  46. }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement