全網首發:使用安卓MediaCodec Encoder進行編碼時的方向問題
安卓MediaCodec Encoder進行編碼,會發現方向總是差90度。怎麼辦?網上通常說的兩種方法,是不行的:
- setDisplayOrientation()。這個是預覽畫面使用的,不影響收到的資料。
- KEY_ROTATE。這個是解碼輸出用的,編碼無效。
那麼怎麼辦?先旋轉,再編碼。具體做法是:
- 初始化的判斷
public AndroidVideoEncoder(int width, int height, int rotate, int framerate, int bitrate)
{
mRotate = rotate;
if (mRotate == 90 || mRotate == 180)
{
int temp = height;
height = width;
width = temp;
}
super.initParams(null, width, height);
}
- NV21旋轉
注意寬高的對換。
if (mRotate == 90)
{
MediaCodecKit.NV21_rotate_to_90 (mDataArray, rotateBuffer, mHeight, mWidth);
}
else if (mRotate == 180)
{
MediaCodecKit.NV21_rotate_to_180(mDataArray, rotateBuffer, mWidth, mHeight);
}
else if (mRotate == 270)
{
MediaCodecKit.NV21_rotate_to_270(mDataArray, rotateBuffer, mHeight, mWidth);
}
else
{
return;
}
System.arraycopy(rotateBuffer, 0, mDataArray, 0, mDataSize);
- 旋轉程式碼參考
https://blog.csdn.net/quantum7/article/details/79762714
- 封裝原始碼
吾已將原始碼進行了封裝,簡單好用。具體位置:
https://github.com/quantum6/Quantum6-CameraCodec-Android
相關文章
- 使用 MediaCodec 在 Android 上進行硬解碼Android
- 遇到的編碼問題、時區問題整理
- 使用MediaCodeC將圖片集編碼為視訊
- android使用MediaCodec實現非同步視訊編解碼Android非同步
- MediaCodec硬編碼pcm2aac
- 嵌入式安卓開發使用LLDB進行斷點除錯C/C++程式碼安卓LLDB斷點除錯C++
- 安卓 Surfaceview 的截圖的問題安卓View
- 使用uniapp開發APP時的除錯/安卓打包等APP除錯安卓
- 全網首發,純手打“RocketMQ筆記”,幫你解決95%以上的問題!MQ筆記
- 安卓核心時間使用的是UTC時間安卓
- 利用網校原始碼進行網校系統開發可以解決哪些問題原始碼
- 安卓stdio中新建activity遇到的問題安卓
- Android音視訊(四)MediaCodec編解碼AACAndroid
- 全志A40i雙網口方案的網路卡軟體問題分析以及排查方向
- 今年安卓開發中碰到的幾個稀奇古怪的問題安卓
- 使用 goxc 方便的進行交叉編譯分發Go編譯
- Android 音視訊 - MediaCodec 編解碼音視訊Android
- 安卓開發第一步:安卓面試題安卓面試題
- Media Encoder 2022 Mac(媒體編碼器)Mac
- 開發網校原始碼時應該注意的幾個問題原始碼
- Anbox安卓apk應用安裝及使用說明和常見問題安卓APK
- 計算時間差,頁面倒數計時,安卓與ios相容問題安卓iOS
- 安卓開發中空指標問題 怎麼解決呢安卓指標
- zlib庫編譯過程遇到的問題及其使用zlib庫進行解壓縮編譯
- 安卓EasyLib的使用安卓
- 學習方向的問題
- py編碼問題
- 字元編碼問題字元
- Flutter 混合開發實戰問題記錄(四)編譯執行時問題的一些總結Flutter編譯
- 如何進行Apache的編譯安裝Apache編譯
- 在vscode中go編碼發生的問題整理VSCodeGo
- 如何使用Media Encoder中的「編碼」皮膚和「佇列」皮膚詳解佇列
- 安卓so包常見報錯問題安卓
- [譯]使用Go Cloud的Wire進行編譯時依賴注入GoCloud編譯依賴注入
- Media Encoder 2022 for Mac(AME音影片編碼工具)Mac
- Android中使用ffmpeg編碼進行rtmp推流Android
- 網易首款編輯器來了! 《河狸計劃》9月5日安卓不限號安卓
- 使用指令碼進行 SAP Spartacus 安裝工作指令碼