显然,AVFoundation(和 Quicktime X)可以解复用并播放正确编码的 .ts
容器,因为 .ts
容器是 HTTPS 实时流的基础。
除了设置本地 Web 服务来为 .m3u8
和关联的 .ts
文件提供服务外,我真的很希望能够:说服 AVURLAsset
和/或 URLAssetWithURL
接受本地文件 .m3u8
URI,就好像它是 HTTP URI,或者更好的是,能够使用 AVQueuePlayer
加载和播放一系列 .ts
文件,而无需跳过实时流媒体。
我想要这样做的原因是我需要以一种零碎的方式在本地即时生成电影 Assets ——整个 Assets 不会立即可用,但会随着时间的推移生成.显然这适用于 AVQueuePlayer
但由于各种原因,我的 Assets 片段被打包在 .ts
容器中。所有这些听起来都非常适合“本地”直播。
我怀疑 URLAssetWithURL
对传递给它的字符串做了一些限定,然后设置了一些属性来表示它正在查看实时流媒体源,这反过来又告诉 AVPlayer
/AVQueuePlayer
期待 .ts
格式的轨道。它可能会看到 HTTP 并决定这是直播。
所以我的问题是:如何“愚弄”AVFoundation 使其像处理远程文件一样处理本地 .m3u8
文件?
额外的问题是:有没有人(如果是的话)能够从 .ts
文件制作一个 AVAsset
以便 Assets 返回状态 Assets 的轨道(准备播放)?
TIA!
最佳答案
这个问题也困扰了我们很久。我们终于决定写一个工具将ts列表转换成mp4文件。它包括使用 TSDemux 来解复用和连接视频/音频,然后使用 GPAC 生成 mp4 文件。
它确实回答了你的问题,但它可能是一种做你想做的事情的方法。 这个工具在 Github 上,欢迎尝试:https://github.com/Keemotion/TS2MP4
关于ios - 可以强制 AVFoundation 播放本地 .ts 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642248/