2017-10-02 9 views
0

J'utilise le domaine pour stocker mes données hors ligne. Je stocke le fichier vidéo en tant que données brutes dans le domaine. J'utilise AVPlayer pour lire ma vidéo et cela ne prend que l'URL en tant que paramètres. J'ai essayé différentes choses pour convertir mes données brutes en URL, mais cela ne semble pas fonctionner. J'ai vérifié la taille des données et il stocke et récupère les données correctement, le seul problème que j'ai est de convertir ces données au format correct (URL) afin qu'AVPlayer puisse lire cette vidéo.Convertir les données en URL pour AVPlayer

+0

Il n'existe aucun moyen de "convertir" les données en URL. L'URL est une valeur qui identifie l'emplacement d'une ressource. Il existe un historique de "Store Images or to Realm", alors peut-être êtes-vous couvert à ce sujet. Donc, en ce moment, vous devrez fournir l'URL contenant le chemin d'accès où votre vidéo est stockée. Cela signifie que si vous stockez votre vidéo sur l'appareil, elle doit être stockée directement sur le système de fichiers sous forme de fichier. – Orlando

+0

@Orlando Je stocke des données brutes dans le domaine, pensez-vous que je devrais trouver le chemin de ces données? –

+0

Eh bien, il n'y a pas de chemin vers les données stockées sur Realm. Realm fait tout le travail sur le système de fichiers afin que vous n'ayez pas accès aux données. Vous devez apporter deux modifications: 1) Stockez les données (dans ce cas, les fichiers vidéo) directement sur le disque et 2) Stockez le chemin des fichiers multimédias enregistrés sur Realm. Après cela, il vous suffit d'initialiser l'objet 'AVPlayer' avec le chemin du disque pour les vidéos. – Orlando

Répondre

0

Vous devez écrire des données brutes dans un fichier temporaire, puis fournir son URL à AVPlayer.

let tmpFileURL = URL(fileURLWithPath:NSTemporaryDirectory()).appendingPathComponent("video").appendingPathExtension("mp4") 
let wasFileWritten = (try? data.write(to: tmpFileURL, options: [.atomic])) != nil 

if !wasFileWritten{ 
    print("File was NOT Written") 
} 
... 
//play url with your AVPlayer 
+0

Je pense que c'est une bonne solution. La seule préoccupation que j'ai est le stockage. Est-ce que je ne stockerais pas les mêmes données à deux endroits sur mon appareil? –

+0

@VandanPatel vous allez stocker votre fichier temporaire dans/dossier temporaire. iOS va le nettoyer quand il aura besoin de plus d'espace. En outre, vous utiliserez un seul fichier temporaire, ce n'est donc pas un problème. – Shmidt

+0

@VandanPatel Vous pouvez également supprimer le fichier temporaire lorsque vous n'en avez pas besoin. – Shmidt