【发布时间】:2017-11-01 09:54:25
【问题描述】:
我正在使用 AVPlayer 流式传输视频 (.m3u8)
let url = URL(string: "http:myUrl.m3u8")
let player = AVPlayer(url: url!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = videoView.bounds
playerLayer.backgroundColor = UIColor.purple.cgColor
videoView.layer.addSublayer(playerLayer)
player.play()
我需要将流媒体视频保存到图库。我注意到在下面的委托中保存了缓存视频路径。
func urlSession(_ session: URLSession, assetDownloadTask: AVAssetDownloadTask, didFinishDownloadingTo location: URL) {
// Do not move the asset from the download location
UserDefaults.standard.set(location.relativePath, forKey: "assetPath")
}
当我尝试使用以下代码从 UserDefaults 获取 url 路径时,
let path = UserDefaults.standard.value(forKey: "assetPath")
结果是:
图书馆/com.apple.UserManagedAssets.s9Giec/video_streaming_title_3E90DD91830B8992.movpkg
我在this question 的答案中找到了 .movpkg 文件夹结构
扩展名是'.movpkg' 如何将视频转换为 mp4 并保存到图库。
注意
-
movpkg文件包含.frag文件。如果有任何答案提供将.frag文件转换为 mp4 文件的方法,这是可以接受的。 -
我可以从
.movpkgurl 创建一个AVAsset,因此问题“如何将 AVAsset 转换为 mp4 文件”的答案也可以接受。
对于任何想要帮助的人,我在这里创建了一个 repo
https://github.com/trungducc/stackoverflow/tree/movpkg-to-mp4
下载完成后,您可以尝试将.movpkg文件转换为mp4。请注意,模拟器不支持下载 HLS 流,所以请在真机上运行 repo。
【问题讨论】:
-
@user3344236
AVAssetExportSession不支持转换.movpkg文件类型。当您使用.movpkgurl 创建AVAsset时,asset.exportable将始终返回false。 developer.apple.com/documentation/avfoundation/avasset/…。这些答案根本与这个问题无关。 -
您好!你解决了这个问题吗?
-
@AlexanderKhitev 我们无法转换它
标签: ios objective-c swift http-live-streaming