Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin iOS,如何保存视频并从文件中播放_Ios_Video_Xamarin.ios - Fatal编程技术网

Xamarin iOS,如何保存视频并从文件中播放

Xamarin iOS,如何保存视频并从文件中播放,ios,video,xamarin.ios,Ios,Video,Xamarin.ios,我可以录制视频并使用以下工具保存: var doc=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 字符串文件名=Path.GetRandomFileName()+“.mov”; var videopath=Path.Combine(文档,文件名) ^这是我保存它的视频路径,但我找不到如何从文件中播放视频 mp = new MPMoviePlayerController(NSUrl.FromFilename("M

我可以录制视频并使用以下工具保存:

var doc=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
字符串文件名=Path.GetRandomFileName()+“.mov”;
var videopath=Path.Combine(文档,文件名)

^这是我保存它的视频路径,但我找不到如何从文件中播放视频

mp = new MPMoviePlayerController(NSUrl.FromFilename("Movies/Showhouzreel2music.m4v"));
^我已经试过了,可以看到这个视频文件并播放,但是这个视频是我放的,对我拍摄的视频不起作用

我希望你们能给我指路或帮助


谢谢,如果您需要更多信息,请随时询问。

您说过可以让MPMoviePlayerController处理您放置的文件吗

如果是这样,那就试试这个

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

编辑(更详细的答案):

实现类似这样的东西

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);

这也将允许您在将来选择打开其他文件。(如PDF、图像等)注意:您可能需要修改一些代码才能使其正常工作,因为我还没有对此进行测试。

Edit:您确实应该使用AVPlayer,因为iOS9及更高版本中不推荐使用MPMoviePlayerController。请阅读文档以获取示例:我有一个问题,对于videopath,您是否只是输入您要查找的视频的名称或整个视频路径,我也无法让它工作。我正在试着把我放好的视频拿出来。这就是我播放视频的方式。也许播放视频的这种糟糕的方式,就是问题所在。我试过了,但没有成功。你有没有更多的例子,让我看看。@oisinamin好的,到底是什么不起作用?您是否收到错误消息?空白屏幕?当你按下一个按钮时什么也没发生?我需要更多关于发生了什么的信息以帮助您:)请同时指定错误是发生在原始代码中,还是发生在答案中提供的代码中。