由于我们无法从AVPlayer中获取隐藏字幕数据或字幕数据,因此我们正在研究其他触发方法,例如时间码或至少知道当前处于活动状态的.ts文件。我无法在文档中找到任何内容,播放器中的CMTime也没有给我m3u8文件中嵌入的时间码。
NSLog(@"%f", CMTimeGetSeconds([mPlayer currentTime] ) );
不是我想要的。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:562
#EXT-X-PROGRAM-DATE-TIME:2020-10-23T14:18:59+08:00
#EXTINF:10,
http://aedsgios1-i.akamaihd.net/hls/live/204775/test1-p/mobile600/Seg_102320_124459_1/mobile600_102320_124459_562.ts
#EXT-X-PROGRAM-DATE-TIME:2020-10-23T14:19:09+08:00
#EXTINF:10,
EXT-X-PROGRAM-DATE-TIME是我想知道的,或者至少是活动的.ts文件的名称。
谢谢!
答案 0 :(得分:1)
你必须:
(BOOL)canInitWithRequest:(NSURLRequest *)请求。
只需在其中记录您的请求并返回NO,因为您只想记录它而不是通过启动startLoading方法来处理它,这是NSURLProtocol API的另一种方法。
完成此操作后,您必须通过添加以下指令将NSURLProtocol注册到您的AppDelegate.m / .swift(无论......)中的didFinishLaunching方法:NSURLProtocol.registerClass(MySubclassProtocol)
< / LI>启动播放器,通常会看到所有请求都登录到调试控制台。
希望有所帮助
答案 1 :(得分:0)
NSLog(@“%@”,[[mPlayer currentItem] currentDate]);
答案 2 :(得分:0)
关于此主题的略微更新。 获取有关AVPlayer正在加载的当前.ts的更多信息的一个小技巧是在AppDelegate的didFinishLaunching方法中注册,这是一个NSURLProtocol对象
- &GT; NSURLProtocol.registerClass(MyURLProtocol)
这使您有机会看到所有请求转移到您的应用中,从而查看播放器加载片段的时间:
2015-06-04 10:57:13.172 MyApp [924:310b]收到了网址请求:http://livestream.net/channel/channel.isml/events(1433260048)/channel-audio_1=128000-video=1600000.m3u8 2015-06-04 10:57:13.182 MyApp [924:6a07]获得了网址请求:http://livestream.net/channel/channel.isml/events(1433260048)/channel-audio_1=128000-video=1600000-143341543.ts