int cropLeft = MediaFormat.getInteger("crop-left"); // The right-coordinate(x) MINUS 1 of the crop rectangle int cropRight = MediaFormat.getInteger("crop-right") + 1; int cropTop = MediaFormat.getInteger("crop-top"); int cropBottom = MediaFormat.getInteger("crop-bottom") + 1; // ...
根据"crop rectangle"的范围,我们可以计算视频帧为旋转时的实际可用尺寸: // 获取输出格式MediaFormatformat=decoder.getOutputFormat(…);intwidth=format.getInteger(MediaFormat.KEY_WIDTH);// 存在"crop rectangle"时的宽度if(format.containsKey(MediaFormat.KEY_CROP_LEFT) && format.containsKey(MediaFormat.KEY_CR...
You need to use the following keys to get the crop rectangle of raw output images from theoutput format. If these keys are not present, the video occupies the entire video frame.The crop rectangle is understood in the context of the output framebeforeapplying anyrotation. 具体key的意义: 官网...
int width = format.getInteger(MediaFormat.KEY_WIDTH); if (format.containsKey("crop-left") && format.containsKey("crop-right")) { width = format.getInteger("crop-right") + 1 - format.getInteger("crop-left"); } int height = format.getInteger(MediaFormat.KEY_HEIGHT); if (format.containsKey...
MediaFormat format = decoder.getOutputFormat(…); int width = format.getInteger(MediaFormat.KEY_WIDTH); if (format.containsKey(MediaFormat.KEY_CROP_LEFT) && format.containsKey(MediaFormat.KEY_CROP_RIGHT)) { width = format.getInteger(MediaFormat.KEY_CROP_RIGHT) + 1 - format.getInteger(Med...
8height = format.getInteger("crop-bottom") +1- format.getInteger("crop-top"); 9} MediaCodec编解码的流程 MediaCodec 首先获取一个空的输入缓冲区,填充要编码或解码的数据,再将填充数据的输入缓冲区送到 MediaCodec 进行处理,处理完数据后会释放这个填充数据的输入缓冲区,最后获取已经编码或解码的输出缓冲区,...
7 if (format.containsKey("crop-top") && format.containsKey("crop-bottom")) { 8 height = format.getInteger("crop-bottom") + 1 - format.getInteger("crop-top"); 9 } MediaCodec编解码的流程 MediaCodec 首先获取一个空的输入缓冲区,填充要编码或解码的数据,再将填充数据的输入缓冲区送到 MediaCodec...
height= format.getInteger("crop-bottom") + 1 - format.getInteger("crop-top"); } ★另请注意,BufferInfo.offset的含义在各设备之间并不一致。 在某些设备上,偏移指向裁剪矩形的左上角像素,而在大多数设备上,它指向整个帧的左上角像素。 状态
val intent = Intent(this, VideoCropPreActivity::class.java) intent.putExtra("src", videoPath)//在裁剪界面接收这个参数即可 startActivity(intent) } } catch (e: Exception) { Log.e(TAG, "读取文件出错", e) Toast.makeText(this, resources.getString(R.string.readVideoFileError), Toast.LENGTH...
buffer.position(rowStride * (crop.top >> shift) + pixelStride * (crop.left >> shift)); for (int row = 0; row < h; row++) { int length; if (pixelStride == 1 && outputStride == 1) { length = w; buffer.get(data, channelOffset, length); ...