2017-08-04 3 views
-3

チャットサーバーからNSDataファイルをダウンロードしています。このファイルは通常ビデオファイルとしてアップロードされています。このファイルを入手してビデオSafariとして表示したいと思います。私はそれをするためにはNSDataとして表示することはできないと思います、そうですか?そうでない場合は、私のiPhoneに表示するためにこのファイルを持つことができるフォーマットは何ですか?ダウンロードしたNSDataタイプをiPhone Swiftで再生するビデオタイプに変換するにはどうすればいいですか?

ので、私は、ビデオファイルに再び戻ってそれを変換について考え始め、そしてここで私は、答えは私たちがプレーするためにそれを使用するURLにビデオを変換できることを説明しthis answer: How to convert video data to NSURL

に基づいて使用するものです後でビデオ。私は解決策を試して、URLを得ました。しかし、私が得るタイプの文字列のURLはSafariで再生することができなかったので、私は何か間違ったことをしていると思っていました。私は、エンコーディングを使用する方法からエラーが発生する可能性があると想定しています。なぜなら、何を入れるべきかわからないからです。

filePathは、NSDataファイルへのパスを含むものです。

  let filePath = self.documentsPathForFileName(name: "video.mov") 


      do { try [videomessage?.url.write(toFile: filePath, atomically: true, encoding: String.Encoding.utf8)]} 
      catch{ 
       print ("error") 
      } 
      let videoFileURL = NSURL(fileURLWithPath: filePath) 

      print (videoFileURL) 

func documentsPathForFileName(name: String) -> String { 

    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
    return documentsPath + name 
} 

答えて

0

実際に動画がDataの場合は、したがって、まず保存して変換する必要があります。試してみてください:

[/*name of NSData*/ writeToFile:/*save file path*/ atomically: YES]; 
NSURL *filepath = [NSURL fileURLWithPath:/*save file path*/]; 
AVPlayerItem *player = [AVPlayerItem playerItemWithURL:filepath]; 

未テストですが、動作するはずです。

あなたはすでに、その後URLを持っている場合は、直接ビデオ再生することができます:

func playVideo() { 

     // setup video player 
     let player = AVPlayer(url: videoUrl) 
     let playerViewController = AVPlayerViewController() 
     playerViewController.player = player 

     self.present(playerViewController, animated: true) { 
      playerViewController.player!.play() 
     } 

     // setup autorotate to landscape orientation 
     let value = UIInterfaceOrientation.landscapeRight.rawValue 
     UIDevice.current.setValue(value, forKey: "orientation") 
    } 
関連する問題