AVFoundation可以强制播放本地.ts文件吗?
很显然,AVFoundation(和QuickTime X)可以解复用并正确播放.ts
容器,因为.ts
容器支持HTTPS直播。
设置一个本地web服务来服务.m3u8
和相关的.ts
文件,我真的很希望能够:说服AVURLAsset
和/或URLAssetWithURL
接受本地文件.m3u8
URI,就像它是一个HTTP URI,或者更好的是,能够使用AVQueuePlayer
来加载和播放一系列.ts
文件,而无需跳过直播的AVQueuePlayer
。
我想这样做的原因是,我需要在某种程度上零星地在本地生成电影资产 – 整个资产将不会一次提供,而是随着时间的stream逝而产生。 显然,这适用于AVQueuePlayer
但由于各种原因,我的资产片段被打包在.ts
容器中。 这听起来像是“本地”直播的完美select。
我怀疑URLAssetWithURL
会对传递给它的string进行一些限定,然后设置一些属性来表明它正在查看一个实时stream媒体源,这个媒体stream反过来告诉AVPlayer
/ AVQueuePlayer
期望以.ts
formsAVQueuePlayer
音轨。 它可能会看到HTTP,并决定这是直播。
所以我的问题是:如何“愚弄”AVFoundation到处理一个本地.m3u8
文件完全一样远程?
奖金的问题是:有没有人(如果是这样的话)能够从.ts
文件创buildAVAsset
,以便资产返回资产轨道的状态(准备播放)?
TIA!
这个问题在很长一段时间也是令我们烦恼的。 我们终于决定编写一个工具将ts列表转换为mp4文件。 它包括使用TSDemux解复用和连接video/audio,然后用GPAC生成mp4文件。
它确实回答你的问题,但它可能是一种做你想做的事的方法。 这个工具在Github上,可以试试: https : //github.com/Keemotion/TS2MP4
你可以直接从底层的ts文件创buildAVURLAssets,直接播放它们,就像播放mov或mp4文件一样。
每个ts文件都有一些开销,所以你最好的办法是简单地把这些文件放入一个大的ts文件(根据你的m3u8的内容),然后播放这个大文件。
有几个小问题:使用基于ts文件的AVAsset构build的AVComposition是饥饿的内存,所以避免AVCompositions除了小文件。 您不能在参考影片中使用基于ts文件的AVAssets。
- Xcode ios:录制video文件的stream式处理,并删除多余的个人陈述
- AVSpeechSynthesizer在后台模式下
- Swift AVCaptureSessionclosures打开button错误:当前不支持多个audio/videoAVCaptureInputs
- 核心数据错误 – NSDate localizedCaseInsensitiveCompare:无法识别的select器发送到实例
- AVCaptureSession条码扫描
- 如何使用AVFoundation裁剪video
- 如何将CVPixelBuffer变成UIImage?
- video暂停时,AVPlayer Fairplay HLS不会停止audio播放
- 重新打开AVCaptureSession