crop - 如何从android表面的媒体编解码器的dequeoutputbuffer裁剪视频缓冲区?
问题描述
我们有原始流数据,我们正在使用 Kitkat 上的 MediaCodec 本机代码对其进行解码和渲染。
考虑我们的视频分辨率为 800 X 480,实际视频内容为 800 X 380。每个 50px 的顶部和底部高度边距都包含黑色区域。在表面上渲染时需要裁剪黑色区域(100px)。
尝试了 setRect 方法来裁剪矩形,但是没有用。
例子:
int32_t left, top, right, bottom;
if (format->findRect("crop", &left, &top, &right, &bottom))
{
left = 0, top = 100, right = 800, bottom = 380;
format->setRect("crop", left, top, right, bottom);
}
另外,在配置格式时尝试设置Mediacodec中指定的crop-left、crop-right、crop-top、crop-bottom,也无法裁剪。例子:
format.setInteger("crop-left", 0);
format.setInteger("crop-top", 100);
format.setInteger("crop-right", 800);
format.setInteger("crop-bottom", 380);
您能否建议一种裁剪视频的方法,以便可以在表面上渲染裁剪的视频。
解决方案
推荐阅读
- haskell - 处理 yesod-websockets 中的断开连接
- javascript - npm start 缺少脚本:开始
- r - 有没有办法沿着排序和分组的小标题进行条件和多行操作?
- c# - 请求路径与支持的文件类型不匹配
- sql-server - 如何按用户汇总设备工单小时数
- google-chrome - 在谷歌浏览器中将 --user-data-dir 设置为空字符串时会发生什么?
- python - 在python中将数字存储在多维(稀疏)数组中的最佳方法
- vue.js - 如何为 Vue Apollo 导入 Apollo Client 3?
- c# - 以相反的顺序显示二维数组的行
- flutter - 在颤动中将二进制数据转换为音频