由于我们无法获得隐藏式字幕数据或字幕数据出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文件,是积极的,至少名字。
谢谢!
你只需要:
- 子类NSURLProtocol你实现一个类(指苹果NSURLProtocol类参考,看看它是如何工作)。 你有NSURLProtocol未来的方法中,你可以看到拦截的请求
(BOOL)canInitWithRequest:(*的NSURLRequest)请求。
只需登录你里面请求并返回NO,因为你只是想记录它,而不是通过推出startLoading方法,从NSURLProtocol API的另一种方法对待它。
一旦做到这一点,你必须加入这个指令您NSURLProtocol到didFinishLaunching方法注册到您的AppDelegate.m / .swift(无论...):NSURLProtocol.registerClass(MySubclassProtocol)
启动您的播放器,你通常应该看到登录到您的调试控制台的所有请求。
希望能帮助到你
的NSLog(@ “%@”,[[MPLAYER CURRENTITEM]的currentdate]);
在这个问题上有轻微的更新。 一个小技巧,以获取有关当前的.ts的AVPlayer加载更多信息,就是在AppDelegate中,一个NSURLProtocol对象的didFinishLaunching方法注册
- > NSURLProtocol.registerClass(MyURLProtocol)
这使您有机会看到所有的请求转变到您的应用程序,因此,看到当一个段由玩家加载:
2015年6月4日10:57:13.172 MyApp的[924:310B]:为URL GOT请求http://livestream.net/channel/channel.isml/events(1433260048)/channel-audio_1=128000-video=1600000。 M3U8选择月份10:57:13.182 MyApp的[924:6a07用于URL GOT请求: http://livestream.net/channel/channel.isml/events(1433260048)/channel-audio_1=128000-video=1600000 -143341543.ts
文章来源: Using AVPlayer in iOS can you know the current .ts file or the current timestamp from the encoder?