ios - 可以强制 AVFoundation 播放本地 .ts 文件吗?

标签 ios macos avfoundation avplayer http-live-streaming

显然,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/

相关文章:

iphone - UIbarbuttonItem 图像看起来拉伸(stretch)/变厚

ios - 更新到 Xcode 8 后的布局问题

ios - 应用程序在执行表委托(delegate)方法时崩溃

mysql - 需要帮助安装 MySQL

macos - OpenGL Driver Monitor 表示纹理正在迅速增加。怎么找漏点?

iphone - 如何在 iOS 中勾选 UIButton?

objective-c - 测试使用中央调度的 GUI 组件

ios - 使用 AVAssetWriter 重新编码 H264 mov 文件 - 如何设置帧率?

ios - 如何在音轨中的特定点触发事件或回调?

iphone - 如何使用 AVCaptureStillImageOutput,特别是 captureStillImageAsynchronouslyFromConnection?