gpt4 book ai didi

ios - 如何将 .movpkg 转换成 mp4

转载 作者:IT王子 更新时间:2023-10-29 05:37:53 30 4
gpt4 key购买 nike

我正在使用 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()

我需要将流媒体视频保存到画廊。我注意到在下面的委托(delegate)中保存了缓存视频路径。

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")

结果是:

Library/com.apple.UserManagedAssets.s9Giec/video_streaming_title_3E90DD91830B8992.movpkg

我在 this question 的答案中找到了 .movpkg 文件夹结构

扩展名是 '.movpkg' 如何将视频转换为 mp4 并保存到图库。

注意事项

  • movpkg 文件包含.frag 文件。如果有任何答案提供了一种将 .frag 文件转换为 mp4 文件的方法,这是可以接受的。

  • 我可以从 .movpkg url 创建一个 AVAsset,所以“How to convert AVAsset to mp4 file”这个问题的答案也可以接受。

对于任何想要帮助的人,我在这里创建了一个 repo

https://github.com/trungducc/stackoverflow/tree/movpkg-to-mp4

您可以尝试在下载完成后将.movpkg 文件转换为mp4。请注意,模拟器不支持下载 HLS 流,因此请在真实设备上运行 repo。

最佳答案

根据 https://en.wikipedia.org/wiki/HTTP_Live_Streaming ,那些“片段”是 MPEG-2 TS 片段。您可以简单地连接所有这些片段并在大多数视频播放器中播放结果,但它不是您想要的真正的 mp4 文件。但值得测试,也许生成的“.ts”视频文件足以满足您的需求。但它还不够好(例如,我最喜欢的 streamer 使用 mp4 文件比使用 MPEG-2 TS 效果更好),转换确实有意义。我通常在 Linux 中使用 ffmpeg 执行此操作:

ffmpeg -i all.ts -acodec copy -absf aac_adtstoasc -vcodec copy out.mp4

其中“all.ts”是所有片段的串联(当然,按照 m3u8 中指定的正确顺序或通常作为文件名的一部分),输出将转到“out.mp4”。此转换仅与容器一起播放,不需要重新编码视频,因此速度非常快。

这个答案可能不完全是你要找的东西(它不是 objective-C 或 Swift 代码或任何你可以在你的 iPhone 上运行的代码)但也许它会提示你要寻找什么,或者至少是一些东西您可以在桌面上进行测试。

关于ios - 如何将 .movpkg 转换成 mp4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47052154/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com