【问题标题】:Android - Recorded Video misorientedAndroid - 录制的视频方向错误
【发布时间】:2013-11-10 11:49:32
【问题描述】:

我的应用中有一个功能是使用前置摄像头录制一定长度的视频。

录制很好,但是方向不正确。我搜索了很多时间,但很多问题只在图片上提到

下面提供了与Camera和MediaRecorder相关的部分

public void onCreate(Bundle savedInstanceState) {
    // Some of the codes are not shown
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    recorder = new MediaRecorder();
    holder = cameraView.getHolder();

}
private void initRecorder() {
    recorder.setCamera(camera);
    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    CamcorderProfile cpLow = CamcorderProfile.get(1,
            CamcorderProfile.QUALITY_LOW);
    recorder.setProfile(cpLow);
    mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
    mFileName += "/youraudiofile.mp4";
    recorder.setOutputFile(mFileName);
    recorder.setMaxDuration(50000); 
    recorder.setMaxFileSize(5000000);
}
private void prepareRecorder() {
    recorder.setPreviewDisplay(holder.getSurface());
    try {
        recorder.prepare();
    } catch (IllegalStateException e) {
        e.printStackTrace();
        finish();
    } catch (IOException e) {
        e.printStackTrace();
        finish();
    }
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open(findFrontFacingCamera());
camera.unlock();
initRecorder();
prepareRecorder();

}   

以上代码有效,在录制过程中我可以得到这样的屏幕

相反,生成的视频将像这样显示

我该如何纠正这个问题?

【问题讨论】:

    标签: android


    【解决方案1】:

    你可能应该使用这个:

    recorder.setOrientationHint(CamOrientationDegrees);
    

    其中“CamOrientationDegrees”是设备在录制开始时的角度。我发现这适用于除三星 S3 之外的大多数设备。 S3 忽略它并根据设备方向来定位视频,这使得在(例如)VLC 上播放时产生的播放角度不正确(我还没有找到如何处理这个问题!)。

    如果您没有在 S3 上使用它,它应该可以正常工作,前提是您正确计算“CamOrientationDegrees”并考虑到它使用前置摄像头这一事实(您可能需要尝试一下) .

    CamOrientationDegrees 只能取值 0、90、180 或 270。

    【讨论】:

      【解决方案2】:

      即使设备是纵向的,视频也总是像设备横向一样被录制。

      您可以通过多种方式对视频进行后处理以重新定向(例如,ffmpeg),尽管我没有尝试过这些方法,而且它们是第三方库,不是 Android SDK 的一部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-14
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        相关资源
        最近更新 更多