Je suis en train de diffuser une vidéo (.m3u8) en utilisant AVPlayer
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()
J'ai besoin de sauvegarder la vidéo en streaming dans ma galerie. J'ai remarqué que dans le délégué ci-dessous sauvegarde le chemin de la vidéo en cache.
func urlSession(_ session: URLSession, assetDownloadTask: AVAssetDownloadTask, didFinishDownloadingTo location: URL) {
// Ne pas déplacer l'asset de l'emplacement de téléchargement
UserDefaults.standard.set(location.relativePath, forKey: "assetPath")
}
Quand j'essaie d'obtenir le chemin de l'URL à partir de UserDefaults en utilisant le code suivant,
let path = UserDefaults.standard.value(forKey: "assetPath")
Le résultat est :
Library/com.apple.UserManagedAssets.s9Giec/video_streaming_title_3E90DD91830B8992.movpkg
Je trouve des structures de dossiers .movpkg en réponse à cette question
l'extension est '.movpkg'
Comment puis-je convertir la vidéo en mp4 et la sauvegarder dans la galerie.
Note
-
Le fichier
movpkg
contient des fichiers.frag
. Il est acceptable si une réponse fournit un moyen de convertir les fichiers.frag
en un fichier mp4. -
Je peux créer un
AVAsset
à partir de l'URL.movpkg
donc la réponse à la question "Comment convertir un AVAsset en fichier mp4" est peut-être aussi acceptable.
Pour quiconque veut aider, j'ai créé un dépôt ici
https://github.com/trungducc/stackoverflow/tree/movpkg-to-mp4
Vous pouvez essayer de convertir le fichier .movpkg
en mp4 après que le téléchargement soit terminé. Notez que le téléchargement de flux HLS n'est pas pris en charge dans le simulateur, donc veuillez exécuter le dépôt sur un vrai appareil.