首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本录像问题

基本录像问题
EN

Stack Overflow用户
提问于 2014-11-21 01:49:14
回答 1查看 462关注 0票数 1

因此,我遵循了初学者视频记录应用程序的默认配方,但我遇到了一些我无法理解的错误。我得到的错误在recorder.Prepare()上;它是/0/test.mp4:打开Failed: ENOENT (没有这样的文件或目录)现在我将粘贴下面的代码i,错误是第45行。此外,我还正确地将权限设置为

代码语言:javascript
复制
<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" />

我认为这是很好的,因为我添加了“相机和RECORD_AUDIO”,然后我增加了其他三个通过谷歌在发布之前这个问题。

代码语言:javascript
复制
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;
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-21 02:02:29

变化

代码语言:javascript
复制
 string path = Android.OS.Environment.ExternalStorageDirectory.Name + "/test.mp4";

至:

代码语言:javascript
复制
string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/test.mp4";

您的原始代码只使用名称目录,而不使用完整路径作为输出位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27052885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档