1
因此,我遵循初學者視頻錄製應用程序的默認配方,但我遇到了一些我無法弄清楚的錯誤。我得到的錯誤是在recorder.Prepare();跟它/0/test.mp4:打開失敗:ENOENT(沒有這樣的文件或目錄)。現在,我將代碼粘貼我在下面,誤差是45行我也已設置正確的權限爲基本視頻錄製問題
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我我認爲這很好,因爲我在recpie中添加了「CAMERA和RECORD_AUDIO」,然後在發佈之前使用Google搜索了其他三個。
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Media;
namespace CameraTest
{
[Activity (Label = "CameraTest", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
MediaRecorder recorder;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
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);
Android.OS.Environment.ExternalStorageDirectory.SetWritable(true);
string path = Android.OS.Environment.ExternalStorageDirectory.Name + "/test.mp4";
// Set our view from the "main" layout resource
// Get our button from the layout resource,
// and attach an event to it
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();
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;
}
}
}
}
此外,它看起來配方不正確。現在填寫錯誤報告。 – matthewrdev 2014-11-21 02:06:38
錯誤報告:https://bugzilla.xamarin.com/show_bug.cgi?id = 24714 – matthewrdev 2014-11-21 02:19:15