gpt4 book ai didi

ios - 使用 AVAssetReader 读取 HLS .ts 段

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:42 25 4
gpt4 key购买 nike

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

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

最佳答案

据我所知,没有。但是,手动从 TS 中提取音频和视频流似乎相当简单。 WWDC2014 的 WWDC session 513 在 VideoToolkit 上有一个很棒的 session ,也恰好在高层次上讨论了 muxing/demuxing TS。也许我遗漏了一些东西,但似乎您可以只获取前两个数据 block 并从中提取 PPS 和 SPS,从中创建一个 CMVideoFormatDescriptionRef,然后将以下 NAL 单元的起始代码更改为length header 并将这些直接输入到 VTDecompressionSession 中。 This answer详细介绍了这些步骤。

或者,这里是 a CocoaPod that remuxes TS2 into MP4 .

关于ios - 使用 AVAssetReader 读取 HLS .ts 段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com