2017-06-20 3 views
0

:それは私はそれが私の保存していたビデオパスです^XamarinのiOS、どのように映像を保存し、ファイルからそれを再生するには、私はビデオを録画し、それを保存することができています

var doc = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); string filename = Path.GetRandomFileName() + ".mov"; var videopath = Path.Combine (doc, filename);

ファイルからビデオを再生する方法を見つけることができません。

mp = new MPMoviePlayerController(NSUrl.FromFilename("Movies/Showhouzreel2music.m4v")); 

^私はこれを試してみましたし、このビデオファイルを参照し、それを再生することができますが、このビデオは私が入れ、私が撮影した映像では動作しません。

私はどの方向性が好きでも、あなたが与えることができるように助けてくれるでしょう。

ご連絡ありがとうございました。さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。

答えて

0

あなたは、あなたが置いたファイルでMPMoviePlayerControllerを動作させることができますか?

もしそうなら、これを試してみてください。

string newVideoPath = Path.GetFileName(videopath); 
mp = new MPMoviePlayerController(NSUrl.FromFilename(newVideoPath)); 

EDIT(もっと精巧な答え):

変更するには、この本から行:これに

var videopath = Path.Combine (doc, filename); 

string videopath = Path.Combine (doc, filename); 

そして、このような何かを実装。

public void PlayVideo(string videopath) 
    { 
     string name = Path.GetFileName(videopath); 
     Device.BeginInvokeOnMainThread(() => 
     { 
      QLPreviewItemFileSystem prevItem = new QLPreviewItemFileSystem(name, videopath); 
      QLPreviewController previewController = new QLPreviewController(); 
      previewController.DataSource = new PreviewControllerDS(prevItem); 
      UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(previewController, true, null); 
     }); 
    } 

    public class PreviewControllerDS : QLPreviewControllerDataSource 
    { 
     private QLPreviewItem _item; 

     public PreviewControllerDS(QLPreviewItem item) 
     { 
      _item = item; 
     } 

     public override IQLPreviewItem GetPreviewItem(QLPreviewController controller, nint index) 
     { 
      return _item; 
     } 

     public override nint PreviewItemCount(QLPreviewController controller) 
     { 
      return 1; 
     } 
    } 

    public class QLPreviewItemFileSystem : QLPreviewItem 
    { 
     string _fileName, _filePath; 

     public QLPreviewItemFileSystem(string fileName, string filePath) 
     { 
      _fileName = fileName; 
      _filePath = filePath; 
     } 

     public override string ItemTitle 
     { 
      get 
      { 
       return _fileName; 
      } 
     } 
     public override NSUrl ItemUrl 
     { 
      get 
      { 
       return NSUrl.FromFilename(_filePath); 
      } 
     } 

    } 

そして、あなたが呼び出す必要がある時はいつでも、それはこれを使用するには:

PlayVideo(videopath); 

これはまた、あなたが将来的ににあなたが選択する必要があり、他のファイルを開くことができます。 (pdfs、画像など)注:まだテストしていないので、コードを修正する必要があるかもしれません。

+0

編集:MPMoviePlayerControllerはiOS9以降では廃止されているため、実際にはAVPlayerを使用する必要があります。例のドキュメントを読む: https://developer.xamarin.com/recipes/ios/media/video_and_photos/play_a_video_using_avplayer/ – Gerrit

+0

ちょうど質問がありました。あなたはあなたが探しているビデオの名前を入れているのですか?全体のビデオパス、私はどちらかのために働くことができません。私は準備が整ったビデオを手に入れようとしています。 – oisin1min

+0

https://developer.xamarin.com/samples/monotouch/MoviePlayback/ これは私がビデオを再生する方法です。ビデオを再生するこの悪い方法は、おそらく問題です – oisin1min

関連する問題