全網首發:使用安卓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
- Unity使用VS開發編碼格式的問題Unity
- JDBC的XML編碼和Delphi融合時的編碼問題JDBCXML
- 使用MediaCodeC將圖片集編碼為視訊
- mac使用phpize進行安裝的時候碰到的問題MacPHP
- 全網首發,純手打“RocketMQ筆記”,幫你解決95%以上的問題!MQ筆記
- MediaCodec硬編碼pcm2aac
- 使用MediaCodec硬解碼h.265視訊及音訊進行播放音訊
- 利用網校原始碼進行網校系統開發可以解決哪些問題原始碼
- android使用MediaCodec實現非同步視訊編解碼Android非同步
- lxml處理xml時的字元編碼問題XML字元
- 全志A40i雙網口方案的網路卡軟體問題分析以及排查方向
- 使用javascript如何給url進行編碼JavaScript
- 使用blueZ進行藍芽程式設計時需要注意的問題藍芽程式設計
- 使用 goxc 方便的進行交叉編譯分發Go編譯
- 開發網校原始碼時應該注意的幾個問題原始碼
- 在eclipse中進行php開發中文亂碼問題EclipsePHP
- 學習方向的問題
- Flutter 混合開發實戰問題記錄(四)編譯執行時問題的一些總結Flutter編譯
- 利用sqlldr工具進行資料遷移時發現的問題解決方法SQL
- [譯]使用Go Cloud的Wire進行編譯時依賴注入GoCloud編譯依賴注入
- jsp的編碼問題JS
- JAVA的中文編碼問題Java
- Android音視訊(四)MediaCodec編解碼AACAndroid
- php編碼問題PHP
- 字元編碼問題字元
- 使用NSSecureCoding協議進行物件編解碼協議物件
- Flask 框架中 SQLAlchemy 使用時的亂碼問題Flask框架SQL
- springweb開發中編碼亂碼問題解析SpringWeb
- ZKUI中文編碼以及以docker方式執行的問題UIDocker
- overflow與flex同時使用發現的問題Flex
- 如何使用Media Encoder中的「編碼」皮膚和「佇列」皮膚詳解佇列
- 【機器學習】李宏毅——AE自編碼器(Auto-encoder)機器學習
- STM32埠IO方向設定問題的IO方向設定問題
- 使用RMAN duplicate對源庫的某個incarnation進行duplicate操作時遇到的問題
- CMake編譯Qt工程時的問題編譯QT
- unity安卓打包的問題Unity安卓
- Android 音視訊 - MediaCodec 編解碼音視訊Android