2017-10-02 7 views
0

レルムを使用してデータをオフラインで保存しています。私はレルムに生データとしてビデオファイルを保存しています。私はAVPlayerを使ってビデオを再生しており、パラメータとしてURLだけを取ります。生データをURLに変換するためにさまざまなことを試しましたが、うまく動作していないようです。私はデータのサイズをチェックし、データを適切に保存して取得します。唯一の問題は、AVPlayerがそのビデオを再生できるように、そのデータを正しいフォーマット(URL)に変換することです。AVPlayerのデータをURLに変換する

+0

データをURLに変換する方法はありません。 URLは、リソースの場所を識別する値です。以前の「Store Images or Realm」の歴史があります。そのことについてはおそらくカバーしています。今は、ビデオが保存されている場所にパスを含むURLを指定する必要があります。つまり、ビデオをデバイスに保存すると、ファイルシステムに直接ファイルとして保存する必要があります。 – Orlando

+0

@Olandland私は、未処理のデータを領域に格納していますが、そのデータへのパスを見つけるべきだと思いますか? –

+0

まあ、レルムに格納されているデータへのパスがないことです。 Realmはファイルシステム上のすべての仕事を行いますので、データにアクセスすることはできません。次の2つの変更を行う必要があります。1)データ(この場合はビデオファイル)をディスクに直接格納し、2)保存されたメディアファイルのパスをレルムに保存します。その後、 'AVPlayer'オブジェクトをビデオのディスクパスで初期化するだけです。 – Orlando

答えて

0

生データを一時ファイルに書き込み、その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

私はそれが良い解決策だと思います。私が持っている唯一の懸念はストレージです。デバイスの2つの場所に同じデータを保存しないでください。 –

+0

@VandanPatel一時ファイルを/ temporaryフォルダに保存します。それ以上のスペースが必要な場合は、iOSでクリーニングします。また、一時ファイルを1つだけ使用するため、問題はありません。 – Shmidt

+0

@VandanPatel一時ファイルは、不要にした後に削除することもできます。 – Shmidt

関連する問題