Ios 使用Avassetrader读取HLS.ts段

Ios 使用Avassetrader读取HLS.ts段,ios,avfoundation,Ios,Avfoundation,为了从HLS实时流中提取原始CMSampleBufferRef(用于重新编码视频),我尝试使用AvasseTrader读取HLS流(.m3u8文件)。由于Avassetrader不支持直接从网络流读取,因此我尝试先将HLS m3u8索引文件中列出的.ts文件下载到本地驱动器,然后使用Avassetrader将其读回。但是,当我尝试使用Avassetrader打开.ts文件时,我收到错误“此媒体格式不受支持”(错误域=AVFoundationErrorDomain Code=-11828“无法打开

为了从HLS实时流中提取原始CMSampleBufferRef(用于重新编码视频),我尝试使用AvasseTrader读取HLS流(.m3u8文件)。由于Avassetrader不支持直接从网络流读取,因此我尝试先将HLS m3u8索引文件中列出的.ts文件下载到本地驱动器,然后使用Avassetrader将其读回。但是,当我尝试使用Avassetrader打开.ts文件时,我收到错误“此媒体格式不受支持”(错误域=AVFoundationErrorDomain Code=-11828“无法打开”UserInfo=0x7fd3aa723570{NSLocalizedFailureReason=此媒体格式不受支持)


有人知道Avassetrader是否支持reading.ts(mpeg2传输流)吗从本地驱动器?如果没有,是否有其他方法从HLS流中创建/提取CMSampleBufferRef?谢谢!

据我所知,它没有。但是,手动从TS提取音频和视频流似乎相当简单。WWDC2014的WWDC会话513在VideoToolkit上有一个很棒的会话,而且碰巧还谈到了在高层次上对TS进行muxing/demuxing。也许我遗漏了一些东西,但似乎您可以只获取前两个数据块,然后从中提取PPS和SP,从这些数据块创建CMVideoFormatDescriptionRef,然后将开始代码从以下NAL单元更改为长度头,然后直接将它们输入VTDecompPressionSession.详细介绍了这些步骤


或者,在现代,这里有一个类似的问题(我认为):希望它能帮助任何人在谷歌上搜索。。。。