ffmpeg YUV420P视频帧旋转
来源:互联网 发布:淘宝销售类目排行榜 编辑:程序博客网 时间:2024/06/15 14:53
//逆时针旋转90 度-(void)frame_rotate_90WithSorrce:(AVFrame *)src des:(AVFrame*)des{ int n = 0; int hw = src->width>>1; int hh = src->height>>1; int size = src->width * src->height; int hsize = size>>2; int pos = 0; //copy y for(int j = 0; j < src->width;j++) { pos = size; for(int i = src->height - 1; i >= 0; i--) { pos-=src->width; des->data[0][n++] = src->data[0][pos + j]; } } //copy uv n = 0; for(int j = 0;j < hw;j++) { pos= hsize; for(int i = hh - 1;i >= 0;i--) { pos-=hw; des->data[1][n] = src->data[1][ pos + j]; des->data[2][n] = src->data[2][ pos + j]; n++; } } des->linesize[0] = src->height; des->linesize[1] = src->height>>1; des->linesize[2] = src->height>>1; des->height = src->width; des->width = src->height;}//逆时针旋转180度-(void)frame_rotate_180WithSorrce:(AVFrame *)src des:(AVFrame*)des{ int n = 0,i= 0,j = 0; int hw = src->width>>1; int hh = src->height>>1; int pos= src->width * src->height; for (i = 0; i < src->height; i++) { pos-= src->width; for (int j = 0; j < src->width; j++) { des->data[0][n++] = src->data[0][pos + j]; } } n = 0; pos = src->width * src->height>>2; for (i = 0; i < hh;i++) { pos-= hw; for (int j = 0; j < hw;j++) { des->data[1][n] = src->data[1][ pos + j]; des->data[2][n] = src->data[2][ pos + j]; n++; } } des->linesize[0] = src->width; des->linesize[1] = src->width>>1; des->linesize[2] = src->width>>1; des->width = src->width; des->height = src->height; des->format = src->format; des->pts = src->pts; des->pkt_pts = src->pkt_pts; des->pkt_dts = src->pkt_dts; des->key_frame = src->key_frame;}//逆时针旋转270度-(void)frame_rotate_270WithSorrce:(AVFrame *)src des:(AVFrame*)des{ int n = 0,i= 0,j = 0; int hw = src->width>>1; int hh = src->height>>1; int pos = 0; for(i = src->width-1;i >= 0;i--) { pos = 0; for(j= 0;j < src->height;j++) { des->data[0][n++]= src->data[0][pos+i]; pos += src->width; } } n = 0; for (i = hw-1; i >= 0;i--) { pos= 0; for (j = 0; j < hh;j++) { des->data[1][n]= src->data[1][pos+i]; des->data[2][n]= src->data[2][pos+i]; pos += hw; n++; } } des->linesize[0] = src->height; des->linesize[1] = src->height>>1; des->linesize[2] = src->height>>1; des->width = src->height; des->height = src->width; des->format = src->format; des->pts = src->pts; des->pkt_pts = src->pkt_pts; des->pkt_dts = src->pkt_dts; des->key_frame = src->key_frame;}
参考文章
阅读全文
0 0
- ffmpeg YUV420P视频帧旋转
- ffmpeg--处理视频旋转
- 一段ffmpeg视频解码为YUV420P的示例代码
- FFMPEG合两帧YUV420P为一帧
- FFMPEG合两帧YUV420P为一帧
- FFMPEG合两帧YUV420P为一帧
- FFMPEG合两帧YUV420P为一帧
- FFmpeg 视频旋转和压缩
- YUV420p旋转代码
- YUV420p旋转代码
- ffmpeg学习八:软件生成yuv420p视频并将其编码为H264格式
- ffmpeg 获取和设置视频旋转角度
- ffmpeg 获取和设置视频旋转角度
- Ffmpeg解码后转YUV420p
- ffmpeg 命令 rgb565 to YUV420p
- FFMpeg提取视频帧
- FFmpeg获取视频旋转角度rotate获取不到的问题解决
- FFmpeg给视频加上旋转90的命令
- Palindrome Number
- 外网IP访问不了阿里云的IIS服务
- 软件与硬件的区别20171205
- 1009. 说反话 (20)
- 登录注册系统,前端密码安全解决方案
- ffmpeg YUV420P视频帧旋转
- 乒乓球
- java实现二叉树
- http://blog.csdn.net/yangyuankp/article/details/7651251
- 160
- java链表
- Lua 创建key-value分离的“分离式table”
- C语言的第一天学习
- spring的AOP术语