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