Пишу пробное приложение, простой рекордер стрима со штатной камеры и запись в .mp4. Как можно организовать запись во внутреннее хранилище Android устройства. С внешней памятью (SD Card) нет проблем, там можно выставить манифест. Пишу все в VS 2017. Собственно код:
[Activity(Label = "videoFaceDetect", MainLauncher = true)]
public class MainActivity : Activity
{
MediaRecorder recorder;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//Установка основного экрана
SetContentView(Resource.Layout.Main);
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);
string path = Android.OS.Environment.DirectoryMovies + "/test.mp4";
record.Click += delegate
{
video.StopPlayback();
recorder = new MediaRecorder();
recorder.SetVideoSource(VideoSource.Camera);
recorder.SetAudioSource(AudioSource.Mic);
recorder.SetOutputFormat(OutputFormat.Default);
recorder.SetVideoEncoder(VideoEncoder.Default);
recorder.SetAudioEncoder(AudioEncoder.Default);
recorder.SetOutputFile(path);
recorder.SetPreviewDisplay(video.Holder.Surface);
recorder.Prepare(); // Вот в этом месте приложение выдает exeption;
recorder.Start();
};
stop.Click += delegate
{
if (recorder != null)
{
recorder.Stop();
recorder.Release();
}
};
play.Click += delegate
{
var uri = Android.Net.Uri.Parse(path);
video.SetVideoURI(uri);
video.Start();
};
}
protected override void OnDestroy()
{
base.OnDestroy();
if (recorder != null)
{
recorder.Release();
recorder.Dispose();
recorder = null;
}
}
}
Камера при нажатие на кнопку "Запись" даже не стартует.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники