KSYMediaInfoProber.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //
  2. // KSYMediaInfoProber.h
  3. // IJKMediaPlayer
  4. //
  5. // Created by 施雪梅 on 16/7/8.
  6. // Copyright © 2016年 bilibili. All rights reserved.
  7. //
  8. #ifndef KSYMediaInfoProber_h
  9. #define KSYMediaInfoProber_h
  10. #import <AVFoundation/AVFoundation.h>
  11. #import "KSYMediaInfo.h"
  12. /**
  13. * KSYMediaInfoProber
  14. */
  15. @interface KSYMediaInfoProber : NSObject
  16. /**
  17. @abstract 初始化文件格式探测器并设置播放地址
  18. @param url 待探测格式的文件地址,该地址可以是本地地址或者服务器地址.
  19. @return 返回KSYMediaInfoProber对象
  20. @warning 必须调用该方法进行初始化,不能调用init方法。
  21. */
  22. - (instancetype)initWithContentURL:(NSURL *)url NS_DESIGNATED_INITIALIZER;
  23. /**
  24. @abstract 文件格式探测时间,单位是秒,默认值是3秒
  25. @discussion 超过该时间未探测到文件格式时,直接返回
  26. */
  27. @property (nonatomic) NSTimeInterval timeout;
  28. /**
  29. @abstract 是否要加速探测速度
  30. @discussion 加速后,探测格式可能不完整,默认不加速
  31. */
  32. @property (nonatomic) BOOL bAccelerate;
  33. /**
  34. @abstract 发送http请求时需要header带上的字段
  35. @since Available in KSYMoviePlayerController 2.1.0 and later.
  36. */
  37. -(void)setHttpHeaders:(NSDictionary *)headers;
  38. /**
  39. @abstract 待探测的文件格式地址
  40. @discussion 可不释放KSYMediaInfoProber实例,通过设置contentURL来完成下一次探测
  41. */
  42. @property (nonatomic, copy) NSURL *url;
  43. /**
  44. @abstract 编码类型是否是h264
  45. @discussion 获取此属性前至少要调用一次[ksyMediaInfo],方可得到正确的结果
  46. */
  47. @property (nonatomic, readonly) BOOL bH264Codec;
  48. /**
  49. @abstract 编码类型是否是hevc
  50. @discussion 获取此属性前至少要调用一次[ksyMediaInfo],方可得到正确的结果
  51. */
  52. @property (nonatomic, readonly) BOOL bHEVCCodec;
  53. /**
  54. @abstract 编码类型是否是aac
  55. @discussion 获取此属性前至少要调用一次[ksyMediaInfo],方可得到正确的结果
  56. */
  57. @property (nonatomic, readonly) BOOL bAACCodec;
  58. /**
  59. @abstract 编码类型是否是mp3
  60. @discussion 获取此属性前至少要调用一次[ksyMediaInfo],方可得到正确的结果
  61. */
  62. @property (nonatomic, readonly) BOOL bMP3Codec;
  63. /**
  64. @abstract 媒体信息, 具体对象类型为KSYMediaInfo
  65. @discussion 未探测到文件格式时为nil
  66. @since Available in KSYMoviePlayerController 1.5.3 and later.
  67. */
  68. @property (nonatomic, strong) KSYMediaInfo *ksyMediaInfo;
  69. /**
  70. @abstract 获取视频缩略图
  71. @param seekTime 指定的时间位置,单位为s, 小于0时无法截图
  72. @param width 缩略图的宽度
  73. @param height 缩略图的高度
  74. @return 返回UIImage对象,即为缩略图
  75. @discussion 缩略图宽度和高度说明
  76. * 指定缩略图宽度和高度都为0时,输出的缩略图与原视频中的宽高相同
  77. * 指定缩略图宽度不为0,高度为0时,高度会根据原视频的宽高比例做出缩放
  78. * 指定缩略图高度不为0,宽度为0时,宽度会根据原视频的宽高比例作出缩放
  79. @since Available in KSYMoviePlayerController 1.8.2 and later.
  80. */
  81. - (UIImage *)getVideoThumbnailImageAtTime:(NSTimeInterval)seekTime width:(int)width height:(int)height;
  82. /**
  83. @abstract 精准获取视频缩略图
  84. @param seekTime 指定的时间位置,单位为s, 小于0时无法截图
  85. @param width 缩略图的宽度
  86. @param height 缩略图的高度
  87. @param accurate 指定是否使用精准获取缩略图
  88. @return 返回UIImage对象,即为缩略图
  89. @discussion 缩略图宽度和高度说明
  90. * 指定缩略图宽度和高度都为0时,输出的缩略图与原视频中的宽高相同
  91. * 指定缩略图宽度不为0,高度为0时,高度会根据原视频的宽高比例做出缩放
  92. * 指定缩略图高度不为0,宽度为0时,宽度会根据原视频的宽高比例作出缩放
  93. * 如果accurate为NO,只能获取关键帧的缩略图;如果为YES,则按照seekTime精准获取缩略图
  94. @since Available in KSYMoviePlayerController 2.9.6 and later.
  95. */
  96. - (UIImage *)getVideoThumbnailImageAtTime:(NSTimeInterval)seekTime width:(int)width height:(int)height accurate:(BOOL)accurate;
  97. @end
  98. #endif /* KSYMediaInfoProber_h */