Ios Avassetrader,如何使用流而不是文件?

Ios Avassetrader,如何使用流而不是文件?,ios,swift,avfoundation,avassetreader,Ios,Swift,Avfoundation,Avassetreader,Avassetrader非常棒,但我只能看到如何将其用于本地资产、文件或我猜是一篇文章 所以 等等, 假设你有一条到达的小溪 (可能是苹果的.M3U8文件示例 ) 事实上,Avassetrader可以用于流吗?还是仅本地文件 我在任何地方都找不到这个解释。(如果你对它更熟悉,也许这是显而易见的。:/)这不是显而易见的。将avassetrader和AVComposition的头文件注释拼凑在一起,会给人留下一种只为本地资产设计的API的强烈印象,尽管该语言没有明确排除非本地资产 从avasset

Avassetrader非常棒,但我只能看到如何将其用于本地资产、文件或我猜是一篇文章

所以

等等,

假设你有一条到达的小溪

(可能是苹果的.M3U8文件示例

)

事实上,Avassetrader可以用于流吗?还是仅本地文件


我在任何地方都找不到这个解释。(如果你对它更熟悉,也许这是显而易见的。:/)

这不是显而易见的。将
avassetrader
AVComposition
的头文件注释拼凑在一起,会给人留下一种只为本地资产设计的API的强烈印象,尽管该语言没有明确排除非本地资产

avassetrader
头文件:

AvasseTrader实例从AVAsset实例读取媒体数据,无论该资产是基于文件的还是表示来自多个源的媒体数据的集合,AVAsset实例就是这样

以及从
AVComposition

AVComposition以定制的时间安排组合来自多个基于本地文件的源的媒体数据,以便同时呈现或处理来自多个源的媒体数据。无论容器类型如何,所有基于本地文件的视听资产都有资格合并


如果您只对视频感兴趣,并且不介意将处理作为播放的一部分,则可以通过将
AVPlayerItemVideoOutput
添加到
AVPlayerItem
中,从远程资源捕获帧。如果你对音频感兴趣,那就麻烦了。

明白了。太好了,谢谢。我想那真的只是为了文件。是的,我的目标是相当“简单”(1)得到一个流式的(比如,.ts)H264流。(2) 分成不同的(例如,2或3)条流。每个流都被硬件解码(因此,基本上是VT解压缩)。真的,就是这样!我担心Avassetrader虽然简单得多,但可能不是答案。我得出的结论是,实现这一点的唯一方法是(A)获取流(B)基本上使用这个过程。。stackoverflow.com/questions/29525000。。将流打包准备进行VTDecompression,(C)发送到VTDecompression,就是这样,使用原始帧。我想“B”是最敏感的部分。我必须承认,我有点困惑于如何只做“a”!:)但是有几个例子,比如gityhub/Avois,所以,它结合在一起:O我希望用Avassetrader找到一个便宜、简单的解决方案:)p.s.我所说的不完全正确:一些远程资产确实可以使用
Avassetrader
,但是你必须首先将它们包装在
Avassetrader
中。远程mp4确实对我有用,但m3u8不行。这个事实可以大大简化你的工作。(A) 还不错,m3u8文件只是指向(最终)mp4s(或其他内容)的文本文件。在这部引人入胜的电影中可能会有一些提示,我将对此进行探讨。好极了有趣的是,在我的例子中,我已经开始将ffmpeg从头编译到iOS应用程序,然后。。用ffmpeg从头开始写我自己的。
assetReader = try AVAssetReader(asset: self.asset)
...
assetReader.addOutput(readerOutput)