首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视频裁剪w/ Matrix android java

视频裁剪w/ Matrix android java
EN

Stack Overflow用户
提问于 2019-02-22 19:17:51
回答 1查看 416关注 0票数 1

任务是根据给定的点(如矩形)裁剪视频,并显示被裁剪的视频。

代码用于裁剪视频的第一halh ( 0,0,视频宽度/2,videoHeight)。但当我尝试显示第二个(视频宽度/2,0,videoWidth,videoHeight),这就是所展示的

视频显示在TextureView内部的FrameLayout上。

这部分,不起作用:

代码语言:javascript
复制
private void updateTextureViewSize(int ax, int ay, int bx, int by) {
    float scaleX;
    float scaleY;

    //proportions between screen and frame dimensions
    scaleX = mVideoWidth / mDisplayWidth;
    scaleY = mVideoHeight / mDisplayHeight;

    float scaleRegionW = mVideoWidth / Math.abs(ax - bx);
    float scaleRegionH = mVideoHeight / Math.abs(ay - by);
    float scaleRegion = scaleRegionW < scaleRegionH ? scaleRegionW : scaleRegionH;

    Matrix matrix = new Matrix();
    if (scaleX > scaleY) {
        matrix.setScale(scaleRegion / scaleY, scaleRegion);
        matrix.postTranslate(-ax * (int) scaleRegion / scaleY, -ay * scaleRegion / scaleY);
    } else {
        matrix.setScale(scaleRegion, scaleRegion / scaleX);
        matrix.postTranslate(-ax * scaleRegion / scaleX, -ay * scaleRegion / scaleX);
    }
    mTextureView.setTransform(matrix);
    mTextureView.setLayoutParams(new FrameLayout.LayoutParams((int) mDisplayWidth, (int) mDisplayHeight));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-24 18:10:46

答案是由德米特里·亚琴科找到的。完整的代码

通过给定的点(ax、ay、bx、xy)裁剪视频的一种简单方法是:

代码语言:javascript
复制
    float scaleX = mDisplayWidth / mVideoWidth, scaleY = mDisplayHeight / mVideoHeight; 
    //proportions between screen and frame dimensions
    float scale = mDisplayHeight / Math.abs(by - ay);
    Matrix matrix = new Matrix();
    matrix.reset();
    matrix.setScale(scale / scaleX, scale / scaleY);
    //scaling video
    matrix.postTranslate(-scale * ax, -scale * ay);
    //move video, so the needed part of it will be displayed properly
    mTextureView.setLayoutParams(new FrameLayout.LayoutParams((int) mDisplayWidth, (int) mDisplayHeight));
    mTextureView.setTransform(matrix);
    //updating the Texture view
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54833735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档