Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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
C# MediaRecorder没有';不要从android xamarin开始_C#_Android_Video_Xamarin_Xamarin.android - Fatal编程技术网

C# MediaRecorder没有';不要从android xamarin开始

C# MediaRecorder没有';不要从android xamarin开始,c#,android,video,xamarin,xamarin.android,C#,Android,Video,Xamarin,Xamarin.android,我正在开发一个应用程序,我可以上传每个用户最多2分钟的视频。 我希望用户录制视频并将其上载到服务器。我可以有目的地录制视频,但不能使用media recorder 要求是不允许用户预览视频,而是录制视频,当用户停止录制时,将视频上传到服务器。 (是否可能不允许在视频捕获意图中播放录制的视频?) 我正在尝试用媒体录像机录制视频。但是它在MediaRecorder.Start()上抛出了一个异常 代码如下:- //Class level variables Camera PhoneCame

我正在开发一个应用程序,我可以上传每个用户最多2分钟的视频。 我希望用户录制视频并将其上载到服务器。我可以有目的地录制视频,但不能使用media recorder

要求是不允许用户预览视频,而是录制视频,当用户停止录制时,将视频上传到服务器。 (是否可能不允许在视频捕获意图中播放录制的视频?)

我正在尝试用媒体录像机录制视频。但是它在MediaRecorder.Start()上抛出了一个异常

代码如下:-

//Class level variables
    Camera  PhoneCamera;
    VideoView VideoRecorderView;
    MediaRecorder VideoRecorder;
    Button BtnRecordVideo;

    // I start a video recording on click of the button
    void RecordVideoWithCustomRecorder(object sender,EventArgs e){
                //TODO : Create a custom layout for recording video in one shot and then uplaoding it to kaltura server
                if (IsRecording) {
                    VideoRecorder.Stop ();
                    ReleaseMediaRecorder ();
                    PhoneCamera.Lock ();
                    (sender as Button).SetBackgroundResource (Resource.Drawable.record_red);
                    StopTimer ();
                    //UploadVideo
                    byte[] getBytes = System.IO.File.ReadAllBytes (RecorderFile._file.AbsolutePath);
                    UploadVideoToKaltura (getBytes);

                    IsRecording = false;

                } else {
                    ReleaseCamera ();
                    if (PrepareVideoRecorder ()) {
                        //System.Threading.Thread.Sleep (1000); i tried putting this, but it won't work

                        VideoRecorder.Start ();//I get an exception here - not sure why
                        RunOnUiThread (() => {
                            (sender as Button).SetBackgroundResource (Resource.Drawable.record_stop);
                            initTimer2 ();
                            IsRecording = true;
                        });

                    } else {
                        ReleaseMediaRecorder ();
                        RunOnUiThread (() => {
                            AlertDialogManager.ShowDialogWithSingleButton(this,"Video Error","Can't record the video now. Exit the camera and try recording again.","Exit Camera",(()=>{
                                this.Finish();
                            }));
                        });
                    }

                }


            }


    //Here's the code to prepare the media recorder

    bool PrepareVideoRecorder(){

                PhoneCamera = IsFrontCameraAvailable ? Camera.Open (1) : Camera.Open ();
                VideoRecorder = new MediaRecorder ();

                //Unlock & set camera to media recorder
                PhoneCamera.Unlock ();
                VideoRecorder.SetCamera (PhoneCamera);

                //Set Source - Video and audio
                VideoRecorder.SetAudioSource (AudioSource.Camcorder);
                VideoRecorder.SetVideoSource (VideoSource.Camera);

                //set Camcorder profile
                VideoRecorder.SetProfile(CamcorderProfile.Get(CamcorderQuality.High));

                //set output file
                RecorderFile._file = new File(RecorderFile._dir, String.Format("vm_movie_{0}.mp4", Guid.NewGuid()));
                VideoRecorder.SetOutputFile (RecorderFile._file.AbsolutePath);

                //set preview display
                VideoRecorder.SetPreviewDisplay (VideoRecorderView.Holder.Surface);

                //Prepare media recorder
                VideoRecorder.SetMaxDuration (12000);
                try{
                    VideoRecorder.Prepare();
                }catch(Exception ex){
                    Utils.WriteDebugInfo ("Excepion -PrepareVideoRecorder: " + ex.Message);
                    return false;

                }
                return true;
            }

            //Release Media Recorder
            private void ReleaseMediaRecorder(){
                if (VideoRecorder != null) {
                    VideoRecorder.Reset();   // clear recorder configuration
                    VideoRecorder.Release(); // release the recorder object
                    VideoRecorder = null;
                    PhoneCamera.Lock();           // lock camera for later use
                }
            }

            //Release Camers
            private void ReleaseCamera(){
                if (PhoneCamera != null){
                    PhoneCamera.Release ();
                          // release the camera for other applications
                    PhoneCamera = null;
                }
            }


            //Creating app specific diary for videos
            private void CreateDirectoryForVideos()
            {
                RecorderFile._dir = new File(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryPictures),"VirtualMentorVideos");
                if (!RecorderFile._dir.Exists())
                {
                    RecorderFile._dir.Mkdirs();
                }
            }