• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用 AVAssetReader 读取 HLS .ts 段

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:00:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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



Best Answer-推荐答案


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

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap