以纵向模式拍摄的旋转视频

时间:2011-09-12 17:04:28

标签: java android video

我的应用可让用户捕捉视频:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_VIDEO_REQUEST); 

或pics:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

在图片的情况下,我可以判断它们是否以除横向以外的任何模式拍摄,然后在我将它们上传到网络之前旋转它们:

ExifInterface exif = new ExifInterface(fileName);
int exifOrientation = Integer.parseInt(exif.getAttribute(ExifInterface.TAG_ORIENTATION));
float rotate = 0;
switch (exifOrientation){
case ExifInterface.ORIENTATION_ROTATE_90:
    rotate = 90;
    break;
case ExifInterface.ORIENTATION_ROTATE_180:
    rotate = 180;
    break;
case ExifInterface.ORIENTATION_ROTATE_270:
    rotate = 270;
    break;
}

if(rotate > 0){
    Bitmap bitmap = BitmapFactory.decodeFile(fileName);
    Matrix matrix = new Matrix();
    matrix.postRotate(rotate);
    bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    OutputStream outStream = context.getContentResolver().openOutputStream(Uri.fromFile(file));
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
}

如何通过视频完成同样的工作?

1 个答案:

答案 0 :(得分:2)

我似乎并不完全理解你的问题。以下是一些我认为至少会引导您朝正确方向前进的问题。希望它有所帮助

  1. 是否要使用MediaPlayer旋转视频以进行播放?

  2. 您是否要更改视频文件中的硬代码以使其在任何地方播放?

  3. 旋转缓冲的视频方向?

  4. =============================================== =================================== 对问题#1的回答:

    //rotating a SurfaceView that contains the MediaPlayer
    /*
        Create a new MediaPlayer SurfaceView, then use the SurfaceHolder interface
    */
    video = new SurfaceView();
    video.getHolder().setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
    
    video.getHolder().lockCanvas().rotate(90);
    

    对问题#2的回答:

    至于更改视频的硬编码。我建议使用一个漂亮的GUI视频编解码器来旋转视频,它应该保存其设置。否则,您将需要从解码器访问源代码,然后根据我的建议访问您的SOL。

    对问题#3的回答:

    以下帖子介绍了如何旋转缓冲视频和/或更改不同模式的方向设置。

    在此发布:Android VideoView orientation change with buffered video

    =============================================== ===================================

    如果这对你没有帮助,那么我相信它会帮助别人,祝你好运。