Vivek Bajpai
Vivek Bajpai

Reputation: 1615

Video Crop or zoom with a specific coordinate?

Is there any way to zoom the video from any specific coordinate on touch. I have tried all the way from mediaplayer and surfaceview and making both custom and accessing window manager and all.If any one has idea so please explain.

Upvotes: 4

Views: 1650

Answers (1)

Dmytro Danylyk
Dmytro Danylyk

Reputation: 19788

You can do this using SurfaceView. Check out my article Surface View - Video Cropping.

Code to crop SurfaceView.

private void updateTextureViewSize(int viewWidth, int viewHeight) {
    float scaleX = 1.0f;
    float scaleY = 1.0f;

    if (mVideoWidth > viewWidth && mVideoHeight > viewHeight) {
        scaleX = mVideoWidth / viewWidth;
        scaleY = mVideoHeight / viewHeight;
    } else if (mVideoWidth < viewWidth && mVideoHeight < viewHeight) {
        scaleY = viewWidth / mVideoWidth;
        scaleX = viewHeight / mVideoHeight;
    } else if (viewWidth > mVideoWidth) {
        scaleY = (viewWidth / mVideoWidth) / (viewHeight / mVideoHeight);
    } else if (viewHeight > mVideoHeight) {
        scaleX = (viewHeight / mVideoHeight) / (viewWidth / mVideoWidth);
    }

    // Calculate pivot points, in our case crop from center
    int pivotPointX = viewWidth / 2;
    int pivotPointY = viewHeight / 2;

    Matrix matrix = new Matrix();
    matrix.setScale(scaleX, scaleY, pivotPointX, pivotPointY);

    mTextureView.setTransform(matrix);
    mTextureView.setLayoutParams(new FrameLayout.LayoutParams(viewWidth, viewHeight));
}

Upvotes: 3

Related Questions