1

我正在使用 libstreaming ( https://github.com/fyhertz/libstreaming ) 进行实时视频流传输,但视频的方向在接收器(服务器)端始终是横向的。我尝试使用 rotateYUV420Degree90(data,mQuality.resX,mQuality.resY) 旋转我的字节,但问题没有解决。我附上了用于转换下面字节的 libstreaming 库的代码。

 public byte[] convert(byte[] data) {

    // A buffer large enough for every case
    if (mBuffer==null || mBuffer.length != 3*mSliceHeight*mStride/2+mYPadding) {
        mBuffer = new byte[3*mSliceHeight*mStride/2+mYPadding];
    }

    if (!mPlanar) {
        if (mSliceHeight==mHeight && mStride==mWidth) {
            // Swaps U and V
            if (!mPanesReversed) {
                for (int i = mSize; i < mSize+mSize/2; i += 2) {
                    mBuffer[0] = data[i+1];
                    data[i+1] = data[i];
                    data[i] = mBuffer[0]; 
                }
            }
            if (mYPadding>0) {
                System.arraycopy(data, 0, mBuffer, 0, mSize);
                System.arraycopy(data, mSize, mBuffer, mSize+mYPadding, mSize/2);
                return mBuffer;
            }
            return data;
        }
    } else {
        if (mSliceHeight==mHeight && mStride==mWidth) {
            // De-interleave U and V
            if (!mPanesReversed) {
                for (int i = 0; i < mSize/4; i+=1) {
                    mBuffer[i] = data[mSize+2*i+1];
                    mBuffer[mSize/4+i] = data[mSize+2*i];
                }
            } else {
                for (int i = 0; i < mSize/4; i+=1) {
                    mBuffer[i] = data[mSize+2*i];
                    mBuffer[mSize/4+i] = data[mSize+2*i+1];
                }
            }
            if (mYPadding == 0) {
                System.arraycopy(mBuffer, 0, data, mSize, mSize/2);
            } else {
                System.arraycopy(data, 0, mBuffer, 0, mSize);
                System.arraycopy(mBuffer, 0, mBuffer, mSize+mYPadding, mSize/2);
                return mBuffer;
            }
            return data;
        }
    }

    return data;
}   

有什么方法可以处理相机方向或录制的视频方向。请帮我解决这个问题。

4

0 回答 0