在iOS中使用AVPlayer可以了解当前的.ts文件或编码器的当前时间戳吗?

由于我们无法从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(请参阅Apple上的NSURLProtocol类参考以了解它是如何工作的).您有一个NSURLProtocol附带的方法,您可以在其中查看截获的请求

(BOOL)canInitWithRequest:(NSURLRequest *)请求.

只需在其中记录您的请求并返回NO,因为您只想记录它而不是通过启动startLoading方法来处理它,这是NSURLProtocol API的另一种方法.

>完成此操作后,您必须通过添加以下指令将NSURLProtocol注册到您的AppDelegate.m / .swift(无论……)中的didFinishLaunching方法:NSURLProtocol.registerClass(MySubclassProtocol)
>启动播放器,通常会看到所有请求都登录到调试控制台.

希望能帮助到你

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...