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

录像中的问题
EN

Stack Overflow用户
提问于 2012-02-20 15:30:35
回答 2查看 1.3K关注 0票数 0

一个星期以来,我一直在尝试录制一段视频,在尝试了一些例子之后,这是不可能的,我总是会遇到类似的问题。我的代码如下:

代码语言:javascript
复制
public class VideoRecorder extends Activity{

private final static String TAG = "Playing";
private MediaRecorder recorder;
private Preview mPreview;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    recorder = new MediaRecorder();

    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);

    mPreview = new Preview(this,recorder);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(mPreview);

}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    menu.add(0, 0, 0, "StartRecording");   
    menu.add(0, 1, 0, "StopRecording");
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) 
    {
        case 0:
            try {
                recorder.start();

            } catch (Exception e) {
                Log.w(TAG, e);
                recorder.release();
            }
            break;

        case 1:   //GoToAllNotes
            recorder.stop();
            recorder.release();
            recorder = null;
            finish();
            break;

        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}
}

class Preview extends SurfaceView implements SurfaceHolder.Callback{
    private SurfaceHolder mHolder;
    private MediaRecorder tempRecorder;

Preview(Context context, MediaRecorder recorder){
    super(context);
    tempRecorder = recorder;
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public Surface getSurface(){
    return mHolder.getSurface();
}

public void surfaceCreated(SurfaceHolder holder){
    tempRecorder.setOutputFile("/sdcard/myVideo.3gp");
    tempRecorder.setPreviewDisplay(mHolder.getSurface());
    try{
        tempRecorder.prepare();
    } catch (Exception e) {
        tempRecorder.release();
        tempRecorder = null;
    }
}

public void surfaceDestroyed(SurfaceHolder holder){
    if(tempRecorder!=null){
        tempRecorder.release();
        tempRecorder = null;
    }
}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h){

}
}

这个应用程序很容易录制视频,但经过尝试和尝试,它不起作用,问题是:

媒体记录器:准备失败-17

如果有人知道如何使它正常工作.我想得到帮助,因为我对此感到绝望。

顺便说一句,对于那些要告诉我添加权限的人,是的,我添加了它们:

代码语言:javascript
复制
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-feature android:name="android.hardware.camera" android:required="true" />

我试过其他的例子,我总是发现一个问题,如果不是准备-17,那就是开始-0.

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 17:33:46

您必须按照如下所述的顺序调用MediaRecorderCamera方法:http://developer.android.com/guide/topics/media/camera.html#capture-video

票数 0
EN

Stack Overflow用户

发布于 2012-02-20 16:31:03

您可以询问CamcorderProfile api设备是否支持所请求的MPEG_4_SP视频格式。

根据Android支持的媒体格式的说法,直到Android4才支持MPEG_4_SP编码。

可能正在使用h.263为您工作。

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

https://stackoverflow.com/questions/9363669

复制
相关文章

相似问题

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