Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 从相机录制视频而不用镜像它就像快照聊天一样大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究社交移动应用.它可以选择录制个人资料视频.我的刻录机的问题是它反映了实际的视频.我知道这是认行为,但希望它像sanpchat一样工作.

预习

录制和播放后

这是我的代码

// return camera instance when activity open first time
private Camera getCameraInstance() {
    // TODO Auto-generated method stub
    releaseCamera();
    releaseMediaRecorder();
    Camera c = null;
    try {
        cameraId = findFrontFacingCamera();
        if (cameraId < 0) {
            cameraId = findBACkFacingCamera();
        }
        c = Camera.open(cameraId);

        // setCameraDisplayOrientation(this,cameraId,c);
        //setCameraDisplayOrientation(this,c);
        c.setDisplayOrientation(90);
    } catch (Exception E) {
        // Camera is not available (in use or does not exist)
    }
    return c; // returns null if camera is unavailable
}
// return __cameraPreview Id 1 to open front camera
privatE int findFrontFacingCamera() { 
    int cameraId = -1;
    // Search for the front facing camera
    int numberOfCameras = Camera.getnumberOfCameras();
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(i,info);
        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            cameraId = i;
            setOrientationHint = 270 ;
            cameraFront = true;
            break;
        }
    }
    return cameraId;
}
// prepare and start recording
private Boolean prepareMediaRecorder() {
    mediaRecorder = new MediaRecorder();
    try {
        myCamera.unlock();
    } catch (Exception E) {
        e.printStackTrace();
    }
    mediaRecorder.setCamera(myCamera);

    mediaRecorder.setAudiosource(MediaRecorder.Audiosource.MIC);
    mediaRecorder.setVideosource(MediaRecorder.Videosource.CAMERA);
    //mediaRecorder.setOutputFormat(MediaRecorder.outputFormat.MPEG_4);

    if (cameraPreview.getVideoSize() != null) {
        mediaRecorder.setOutputFormat(MediaRecorder.outputFormat.MPEG_4);
        mediaRecorder.setOutputFile(saveUrl);

        mediaRecorder.setVideoEncodingBitRate(10000000);
        mediaRecorder.setVideoFrameRate(30);
        mediaRecorder.setVideoSize(cameraPreview.getVideoSize().width,cameraPreview.getVideoSize().height);

        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    } else {
        CamcorderProfile cp = CamcorderProfile.get(cameraId,CamcorderProfile.QUALITY_HIGH);
        mediaRecorder.setProfile(cp);
    }
    Log.e(tag,"Video profile CamcorderProfile.QUALITY_HIGH: " + "cp.quality:" + cp.quality
            + ",cp.videoFrameWidth:" + cp.videoFrameWidth
            + ",cp.videoFrameHeight:" + cp.videoFrameHeight);

    mediaRecorder.setMaxDuration(MAX_VIDEO_LENGTH);
    mediaRecorder.setOrientationHint(setOrientationHint);
    try {
        mediaRecorder.prepare();

    } catch (IllegalStateException | IOException E) {
        e.printStackTrace();
        releaseMediaRecorder();
        return false;
    }
    mediaRecorder.start();
    return true;
}

我希望它应该与播放中的预览相同. Sanpchat已经做了同样的事情,提前感谢.

解决方法

您已将前置摄像头的方向设置为270,
setOrientationHint = 270 ;

相反,我建议将方向设置为180度,如下所示,

setOrientationHint = (info.orientation - 180 + 360) % 360;

这也将改变整个视频文件.

大佬总结

以上是大佬教程为你收集整理的android – 从相机录制视频而不用镜像它就像快照聊天一样全部内容,希望文章能够帮你解决android – 从相机录制视频而不用镜像它就像快照聊天一样所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。