zoukankan      html  css  js  c++  java
  • EasyPusher手机直播编码推送之图像旋转90度后画面重复的问题

    本文转自EasyDarwin开源团队开发Holo的博客:http://blog.csdn.net/holo_easydarwin

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

    原始画面

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

    这里写图片描述

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

    mediaFormat = MediaFormat.createVideoFormat("video/avc", width,height);
    • 1
    • 1

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

    mediaFormat = MediaFormat.createVideoFormat("video/avc", height, width);
    • 1
    • 1

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

    这里写图片描述

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

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

  • 相关阅读:
    [bzoj1113][Poi2008]海报PLA
    [CF1111D]Destroy the Colony
    [CF1111E]Tree
    [CF1111C]Creative Snap
    [洛谷P5136]sequence
    [洛谷P5190][COCI 2010] PROGRAM
    [洛谷P5137]polynomial
    US Open 2016 Contest
    【hackerrank】Week of Code 26
    usaco中遇到的问题
  • 原文地址:https://www.cnblogs.com/babosa/p/5904620.html
Copyright © 2011-2022 走看看