网上找不到相关的,自已写了一段代码,欢迎指正:private byte[] YuvScaledH(byte[] yuvdata, int sourceWidth, int sourceHeight, int times){
byte[] scaledYuv=new byte[sourceHeight*sourceWidth*times*3/2]; //仅拉伸H,W不变
for(int i=0;i<sourceHeight;i+=2){
int inOffset=i*sourceWidth;
int outOffset=(i*times*sourceWidth);
for(int t=0;t<times;t++){
System.arraycopy(yuvdata, inOffset, scaledYuv, outOffset, sourceWidth*2);
outOffset+=sourceWidth*2;
}
}
int baseUV=sourceWidth*sourceHeight; //源图UV分量起始点
for(int i=0;i<sourceHeight/2;i++){
int inOffset=baseUV+i*sourceWidth;
int outOffset=(baseUV+i*sourceWidth)*times;
for(int t=0;t<times;t++){
System.arraycopy(yuvdata, inOffset, scaledYuv, outOffset, sourceWidth);
outOffset+=sourceWidth;
}
}
return scaledYuv;
}
byte[] scaledYuv=new byte[sourceHeight*sourceWidth*times*3/2]; //仅拉伸H,W不变
for(int i=0;i<sourceHeight;i+=2){
int inOffset=i*sourceWidth;
int outOffset=(i*times*sourceWidth);
for(int t=0;t<times;t++){
System.arraycopy(yuvdata, inOffset, scaledYuv, outOffset, sourceWidth*2);
outOffset+=sourceWidth*2;
}
}
int baseUV=sourceWidth*sourceHeight; //源图UV分量起始点
for(int i=0;i<sourceHeight/2;i++){
int inOffset=baseUV+i*sourceWidth;
int outOffset=(baseUV+i*sourceWidth)*times;
for(int t=0;t<times;t++){
System.arraycopy(yuvdata, inOffset, scaledYuv, outOffset, sourceWidth);
outOffset+=sourceWidth;
}
}
return scaledYuv;
}
解决方案 »
- Android中,如何实现类似微信中邮件添加联系人的功能
- android小球不规则道路碰撞问题
- android自定义View的显示问题。。在线等
- 求一个程序,根据用户ID,实现计时功能
- 怎么从surfaceview切换到其他的view呢
- 一个消息窃听器的问题
- Android 的WebView不能通过中国移动的WAP认证,UC可以,怎么解决?
- 请问full Init JPEG decoder failed -10这个错误怎么解决?
- alljoyn 如何在android上编译?
- android 能否实现数据的叠加。
- Android 浏览器浏览网页时的滑屏前进后退是如何实现的呢
- android音乐和视频同时播放问题
可参考:
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
ffmpeg中的sws_scale算法性能测试