本文转自:http://blog.csdn.net/holo_easydarwin/article/details/51147379

最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏推送直播画面到EasyDarwin然后通过播放器播放视频画面就会逆时针旋转90度,如图:

手机横屏的时候不会旋转,这个问题思路其实很简单,在推送给服务器之前把图片数据旋转90度之后就可以了,然后就做了一次顺时针旋转的,结果画面变成如下样子:

很明显图片顺时针旋转了90度,但是还不如不旋转!我就想当然的以为旋转的算法出错了,然后开始寻求谷歌度娘,然并卵,然后就自己开始了解学习YUV420SP、YUV420P,并且自己写旋转算法,结果还是这样。其实着就有个结论了,旋转算法没问题!那是哪儿除了问题了呢?一次聊天提到宽和高是不是有问题,一语点醒梦中人。我在编码的时候使用MediaCodec,编码的时候设置宽为640高480:

<code class="language-java hljs  has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">mediaFormat = MediaFormat.createVideoFormat(<span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"video/avc"</span>, width,height);</code><ul class="pre-numbering" style="margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li></ul>

而旋转90度之后宽和高就颠倒了啊,再这样编码肯定有问题,于是在将编码器的宽和高颠倒:

<code class="language-java hljs  has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">mediaFormat = MediaFormat.createVideoFormat(<span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"video/avc"</span>, height, width);</code><ul class="pre-numbering" style="margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li></ul>

这次果然出现奇迹了,画面终于正常了:

其实就是简单的颠倒一下width和height的位置,这个问题困扰了好几天,终于解决了

关于代码可见:https://github.com/EasyDarwin/EasyPusher

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2016

EasyPusher手机直播图像旋转90度后画面重复的问题相关推荐

  1. EasyPusher手机直播编码推送之图像旋转90度后画面重复的问题

    本文转自EasyDarwin开源团队开发Holo的博客:http://blog.csdn.net/holo_easydarwin 最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏推送 ...

  2. C语言_将 4×4 的数组逆时针旋转 90 度后输出

    时间:2020年9月6日 16:27:00 /*下面程序的功能是将一个 4×4 的数组进行逆时针旋转 90 度后输出, 要求原始数组的数据随机输入,新数组以 4 行 4 列的方式输出, 请在空白处完善 ...

  3. textureview 旋转90度后平铺_C++初级编程NOIP题:11H1537: 图像旋转

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n ...

  4. textureview 旋转90度后平铺_轮滑知识 | 单排轮滑的旋转技巧

    原地旋转中,双脚尖最难,其次是双脚跟,比较容易的是脚跟脚尖.但无论是哪种旋转,都有几个技术重点:一是单轮脚力要绝对够,二是身体要平衡:三是手部动作. 单排轮滑旋转练习方法: 1.练习方法很简单双脚用单 ...

  5. java canvas旋转_在HTML5 Canvas上将图像旋转90度

    我无法使用HTML5画布旋转图像 . 我想我的数学错误,并希望得到任何帮助 . 在移动设备上,我在150px x 558px画布上捕获用户签名 . 我试图创建一个558像素×150像素的图像,这只是旋 ...

  6. 移动端手机h5上传图片旋转90度

    移动端手机h5上传图片会旋转90度的问题 h5页面调用相机正常情况下都是正常的,但是有些手机横着照相的时候就会正常的,iphone正确的拍照方式是横屏的,而用户往往是竖屏拍照上传的,就相当于照相机反转 ...

  7. c语言数组旋转90度,输入n*n的字符矩阵,把它旋转90度后输出??用c语言写,拜托了,急啊!!...

    匿名用户 1级 2012-02-01 回答 #include #define N 4 int main() { int i, j; int m[N][N]; for(i=0;i for(j=0;j s ...

  8. android opencv 图像旋转90度,使用OpenCV转换图像( 旋转 90度)的简单方法?

    以下是我的EmguCV ( OpenCV的C# 端口) 解决方案:public static Image Rotate90(this Image img) where TColor : struct, ...

  9. java图像旋转90度_旋转图像90度在java

    使用此方法. /** * Rotates an image. Actually rotates a new copy of the image. * * @param img The image to ...

最新文章

  1. 时间序列的建模新思路:清华、李飞飞团队等提出强记忆力E3D-LSTM网络
  2. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
  3. linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
  4. boost::statechart模块实现延迟错误的测试程序
  5. 极域电子书包课堂管理系统_【君莲微讯】君莲学校(小学部)开展电子书包第13共同体数学研讨活动...
  6. 【Java进阶营】JAVA多线程基础学习二:synchronized
  7. Got error 28 from storage engine的错误怎么办
  8. 2018上C语言程序设计(高级)作业-第0次作业
  9. 批处理批量创建域用户
  10. 读书笔记 effective c++ Item 34 区分接口继承和实现继承
  11. Plugin [id: ‘com.github.kt3k.coveralls‘, version: ‘2.8.2‘] was not found in any of the following sou
  12. AdventNet 系列软件license
  13. python自动抓取_python自动化之web抓取
  14. mysql连接本地数据库失败_“sql server”连接本地数据库失败怎么办?
  15. 有关微信小程序用户登录界面跳转问题
  16. 一文读懂数据脱敏技术在智能汽车中的应用
  17. 百度翻译API接口的使用
  18. PostgreSQL数据库日常学习笔记13-约束
  19. Google Chromecast 联网激活攻略
  20. win10禁用计算机属性,Win10可以禁用哪些服务优化技巧?

热门文章

  1. python超详细零基础 bs4解析之爬取唯美图片
  2. 如何用kaldi训练好的DNN模型做在线识别
  3. android通过usb调试安装apk后 卸载 无法安装release版 魅族note1 note3
  4. 摄影的一个核心本质竟然是提高审美?干货满满教你告别摄影渣渣!
  5. c语言生成两位随机素数算法,[算法]费马小定理求质数的算法之Miller-Rabin算法,C语言实现 | 李大仁博客...
  6. 浏览器支持linux版本下载软件,Linux版Edge浏览器下载
  7. 2021年度见证法王的诞生
  8. DataTables介绍
  9. 水晶服务器维护,《新丝路》服务器维护公告
  10. 观赛S11的正确打开方式,三星玄龙骑士已经为你准备好了