Xamarin Android录制视频-质量差
我正在使用下面的Xamarin教程 我可以成功地录制视频和音频,但质量不是很好。有人能建议/解释我如何提高质量吗 我知道该设备可以录制更高质量的视频,因为本机摄像头应用程序的录制质量要高得多 编辑这里是我到目前为止的代码Xamarin Android录制视频-质量差,xamarin,xamarin.android,Xamarin,Xamarin.android,我正在使用下面的Xamarin教程 我可以成功地录制视频和音频,但质量不是很好。有人能建议/解释我如何提高质量吗 我知道该设备可以录制更高质量的视频,因为本机摄像头应用程序的录制质量要高得多 编辑这里是我到目前为止的代码 protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set ou
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.RecordVideo);
var record = FindViewById<Button>(Resource.Id.Record);
var stop = FindViewById<Button>(Resource.Id.Stop);
var play = FindViewById<Button>(Resource.Id.Play);
var video = FindViewById<VideoView>(Resource.Id.SampleVideoView);
var videoPlayback = FindViewById<VideoView>(Resource.Id.PlaybackVideoView);
string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/test.mp4";
if (Camera.NumberOfCameras < 2)
{
Toast.MakeText(this, "Front camera missing", ToastLength.Long).Show();
return;
}
video.Visibility = ViewStates.Visible;
videoPlayback.Visibility = ViewStates.Gone;
_camera = Camera.Open(1);
_camera.SetDisplayOrientation(90);
_camera.Unlock();
recorder = new MediaRecorder();
recorder.SetCamera(_camera);
recorder.SetAudioSource(AudioSource.Mic);
recorder.SetVideoSource(VideoSource.Camera);
recorder.SetOutputFormat(OutputFormat.Default);
recorder.SetAudioEncoder(AudioEncoder.Default);
recorder.SetVideoEncoder(VideoEncoder.Default);
//var cameraProfile = CamcorderProfile.Get(CamcorderQuality.HighSpeed1080p);
// recorder.SetProfile(cameraProfile);
recorder.SetOutputFile(path);
recorder.SetOrientationHint(270);
recorder.SetPreviewDisplay(video.Holder.Surface);
record.Click += delegate
{
recorder.Prepare();
recorder.Start();
};
stop.Click += delegate
{
if (recorder != null)
{
video.Visibility = ViewStates.Gone;
videoPlayback.Visibility = ViewStates.Visible;
recorder.Stop();
recorder.Release();
}
};
play.Click += delegate
{
video.Visibility = ViewStates.Gone;
videoPlayback.Visibility = ViewStates.Visible;
var uri = Android.Net.Uri.Parse(path);
videoPlayback.SetVideoURI(uri);
videoPlayback.Start();
};
}
protectedoverride void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//从“主”布局资源设置视图
SetContentView(Resource.Layout.RecordVideo);
var record=findviewbyd(Resource.Id.record);
var stop=findviewbyd(Resource.Id.stop);
var play=findviewbyd(Resource.Id.play);
var video=findviewbyd(Resource.Id.SampleVideoView);
var videoPlayback=findviewbyd(Resource.Id.PlaybackVideoView);
string path=Android.OS.Environment.ExternalStorageDirectory.AbsolutePath+“/test.mp4”;
如果(摄像机数量小于2)
{
Toast.MakeText(这个“前摄像头丢失”,ToastLength.Long).Show();
返回;
}
video.Visibility=ViewStates.Visible;
videoPlayback.Visibility=ViewStates.Gone;
_摄像机=摄像机。打开(1);
_摄像头。设置显示方向(90);
_摄像头解锁();
记录器=新的MediaRecorder();
记录器。设置摄像机(_摄像机);
recorder.SetAudioSource(AudioSource.Mic);
录像机.设置视频源(视频源.摄像机);
SetOutputFormat(OutputFormat.Default);
recorder.SetAudioEncoder(AudioEncoder.Default);
recorder.SetVideoEncoder(VideoEncoder.Default);
//var cameraProfile=CamcorderProfile.Get(CamcorderQuality.HighSpeed1080p);
//记录器.SetProfile(cameraProfile);
recorder.SetOutputFile(路径);
记录器。设置方向提示(270);
recorder.SetPreviewDisplay(视频.支架.表面);
记录。单击+=委派
{
记录器。准备();
recorder.Start();
};
停止。单击+=委派
{
if(记录器!=null)
{
video.Visibility=ViewStates.Gone;
videoPlayback.Visibility=ViewStates.Visible;
录音机。停止();
记录器。释放();
}
};
播放。单击+=委派
{
video.Visibility=ViewStates.Gone;
videoPlayback.Visibility=ViewStates.Visible;
var uri=Android.Net.uri.Parse(路径);
videoPlayback.SetVideoURI(uri);
videoPlayback.Start();
};
}
我没有看到示例指定了anywhere,因此您可能希望从该示例开始。默认帧速率、比特率和视频帧大小可能低于预期值。我现在不是计算机管理员,但尝试将配置文件设置为,例如使用MediaRecorder中的SetProfile方法
您需要在设置视频和音频源之后,但在调用SetOutputFile方法之前设置配置文件。我没有看到指定anywhere的示例,因此您可能希望从该示例开始。默认帧速率、比特率和视频帧大小可能低于预期值。我现在不是计算机管理员,但尝试将配置文件设置为,例如使用MediaRecorder中的SetProfile方法
您需要在设置视频和音频源之后,但在调用SetOutputFile方法之前设置配置文件。我已经添加了我正在使用的代码,我尝试添加了CamcorderProfile(在上面的代码段中注释掉了),但应用程序中的此配置文件刚刚崩溃。我把这个加在正确的地方了吗?嗯,不知道是怎么回事。我还不能进入计算机,但你能尝试添加
记录器。设置视频编码比特率(3000000)代码>而不是recorder.SetProfile?我认为你的主要问题是比特率很低,所以这应该可以解决它。您也可以手动将帧大小设置为全高清:recorder.SetVideoSize(19201080)
我已经添加了我正在使用的代码,我已经尝试添加CamcorderProfile(在上面的代码片段中注释掉了),但应用程序中的此功能刚刚崩溃。我把这个加在正确的地方了吗?嗯,不知道是怎么回事。我还不能进入计算机,但你能尝试添加记录器。设置视频编码比特率(3000000)代码>而不是recorder.SetProfile?我认为你的主要问题是比特率很低,所以这应该可以解决它。您也可以手动将帧大小设置为全高清:recorder.SetVideoSize(1920,1080)
Hello,您如何解决此问题我无法添加CamcorderProfile Hello,您如何解决此问题我无法添加CamcorderProfile