无法使用 setProfile() 设置 MediaRecorder 配置文件它返回空指针异常

Posted

技术标签:

【中文标题】无法使用 setProfile() 设置 MediaRecorder 配置文件它返回空指针异常【英文标题】:cannot set the MediaRecorder profile using setProfile() it returns a null pointer exception 【发布时间】:2015-02-21 09:08:51 【问题描述】:

每当我尝试将我的 MediaRecorder 对象的配置文件设置为 camcorderProfile 时,它​​都会给我一个 NullPointerException,这意味着我的 camcorderProfile 以某种方式为空,但我已经设置了它。这是我准备运行记录器和相机的整个函数。

  private void prepareRecorder()
  
    recorder = new MediaRecorder();
    recorder.setPreviewDisplay(holder.getSurface());
    camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);

    if (usecamera)
    
        camera.unlock();
        recorder.setCamera(camera);
    
    recorder.setAudiosource(MediaRecorder.AudioSource.CAMCORDER);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setProfile(camcorderProfile);

   String fileName = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

    if(camcorderProfile.fileFormat == MediaRecorder.OutputFormat.THREE_GPP)
    
        fileExtension = ".3gp";
    

    if(camcorderProfile.fileFormat == MediaRecorder.OutputFormat.MPEG_4)
    
        fileExtension = ".mp4";
    


    try
    
        FileBuffer = File.createTempFile(fileName, fileExtension, Environment.getExternalStorageDirectory());
        recorder.setOutputFile(FileBuffer.getAbsolutePath());
    
    catch(IOException e)
    
        e.printStackTrace();
    

    recorder.setMaxDuration(30000); // 30 seconds

    try 
        recorder.prepare();
     catch (IllegalStateException e) 
        e.printStackTrace();

     catch (IOException e) 
        e.printStackTrace();

    

   

【问题讨论】:

【参考方案1】:

如果相机不支持请求的质量,CamcorderProfile 可以为空。在您的情况下,它的后置摄像头,因为您在查询配置文件时没有传递摄像头 ID。

所以最好使用 API 检查是否支持:

public static boolean hasProfile (int quality)

【讨论】:

非常感谢!我刚刚通过 setprofile() 我的 cameraInfo.face 并将质量设置为高。下次我可能应该阅读更多的 api。

以上是关于无法使用 setProfile() 设置 MediaRecorder 配置文件它返回空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

如何使用spring JPA存储库保存@lob数据

如何解决bootstrap与ie不兼容问题

leetcode496 - Next Greater Element I - easy && leetcode503 - Next Greater Element II - medi

无法访问其他应用程序创建的外部存储中的文件

django 媒体 url 标签

Flutter ListView.builder sizedbox问题