導航:首頁 > 操作系統 > androidyuv格式

androidyuv格式

發布時間:2022-06-20 22:47:03

『壹』 求助:怎麼直接顯示YUV格式圖像

其實android裡面定義的有overlay的介面,如果你的硬體支持的話,應該可以直接調用顯示。但是好像沒有開放overlay的借口給java層,所以你應該只能在framework層調用overlay來顯示你的解碼後的圖像。具體的例子,你可以參考一下camera 的實現,做pre-view的時候就是調用的overlay直接顯示的。

『貳』 android採集的攝像頭數據是什麼格式的

android camera初始採集到的格式是yuv格式的,圖像繪制的時候會轉換成rgb格式的。

『叄』 android手機preview設置了yuv420sp格式輸出,可是輸出的是yuv420p

建議上神族論壇,求教大家,或者直接刷機

『肆』 android 攝像頭出來的格式怎麼會是yuv420p 而不是yuv420sp(nv21)呢

那是因為你在相機參數初始化的時候未設置,加上這個就可以了

List<Integer> formatsList = parameters.getSupportedPreviewFormats(); //獲取設備支持的預覽format
if(formatsList.contains(ImageFormat.NV21))
parameters.setPreviewFormat(ImageFormat.NV21); //設置預覽格式為NV21,默認為NV21
if(formatsList.contains(ImageFormat.JPEG))
parameters.setPictureFormat(ImageFormat.JPEG); //設置照片儲存格式

『伍』 如何在Android上快速顯示yuv數據

最近在搞Android方面的視頻處理開發,解碼出來的都是YUV420格式的數據,如何在surface上高效顯示出來,頗費了一點周折,現在總結一下。

思路1:在java中將Surface指針傳遞到jni層,lock之後就可以獲得SurfaceInfo,進而取得要顯示的surface格式、高度、寬度,在2.2/2.3版本,surface的Format一般都是RGB565格式,只用做一個顏色空間的轉換,scaler就可以將yuv數據顯示出來。
顏色空間轉換和Scaler算是比較耗時的操作了。如何提高效率,scaler最好能交給android的底層函數去做,如果有gpu的,底層函數直接會利用gpu,效率非常高,又不佔用cpu資源。

思路2:
參考framework中的AwesomePlayer,裡面利用AwesomeLocalRenderer/AwesomeRemoteRenderer來實現解碼出來的數據顯示,這個效率應該非常高,但是平台的關聯性會增加很多。
調用介面比較簡單,
首先創建一個render,
mVideoRenderer = new AwesomeRemoteRenderer(
mClient.interface()->createRenderer(
mISurface, component,
(OMX_COLOR_FORMATTYPE)format,
decodedWidth, decodedHeight,
mVideoWidth, mVideoHeight,
rotationDegrees));
直接調用render函數就可以顯示了。
virtual void render(MediaBuffer *buffer) {
void *id;
if (buffer->meta_data()->findPointer(kKeyBufferID, &id)) {
mTarget->render((IOMX::buffer_id)id);
}
}

其它的參數都很容易獲得,關鍵是buffer_id 怎麼獲得?OMXCodec.cpp中有相關的可以參考。
實際的效果在我的S510E上跑,效率非常高,幾乎不佔用主控cpu資源,很可能都交給dsp和gpu去搞了。

思路3:
參考 camera的方式。由於在第2步已經取得了非常好的效果,筆者沒有做深入研究。

『陸』 android yuv格式數組怎麼判斷紅色

這些代碼都在一個文件里,

變數定義,庫載入和jni注冊
#include <stdio.h>
#include "JNIHelp.h"

#include <jni.h>
#include <stddef.h>
#include <unistd.h>
#include <limits.h>
#include "types.h"
using namespace android;
static const char *classPathName = "com/example/yuvplayer/YuvStream"; //xia
static sp<Surface> native_surface; //xia

『柒』 android yuv怎麼轉換成RGB565

參數分別是寬,高,原數據指針,轉化後的目標數據指針。


你找的這個函數是用C寫的,而你的save(byte[]yuv420,Stringpath,intwidth,intheight,intquality)是JAVA,因此你要使用JNI。或者你把cvt_420p_to_rgb565函數轉成JAVA版。

舉個例子使用jni(實際自己測試):

cvt_420p_to_rgb565修改為

#ifdef__cplusplus
extern"C"{
#endif

JNIEXPORTjobjectArrayJNICALL你的包名_類名_cvt420pToRGB565(JNIEnv*env,jobjectobj,jintwidth,jintheight,jcharArraysrcData,jcharArraydstData);
#ifdef__cplusplus
};
#endif

JNIEXPORTjobjectArrayJNICALL你的包名_類名_cvt420pToRGB565(JNIEnv*env,jobjectobj,jintwidth,jintheight,jcharArraysrcData,jcharArraydstData)
{
unsignedchar*src=(unsignedchar*)(env->GetByteArrayElements(srcData,0));
unsignedchar*dst=(unsignedchar*)(env->GetByteArrayElements(dstData,0));

下面照抄!!

『捌』 Android Camera提取出來的yuv源數據怎麼提取y,u,v分量

Android
camera採集到的可以是yuv420sp也可以食yuv420p。我知道yuv420中yuv的分布。現在主要有個前提是從Android
Camera
中採集到的yuv420數據,這個byte[]的長度是一倍的視頻寬高乘積,不是1.5倍。在jni裡面獲取到的長度又確實是1.5倍,但是在jni裡面轉換為jbyte*
的長度還是1倍,就不知道怎麼弄了~
查看原帖>>

『玖』 android camera 採集到的數據是yuv嗎

是,android camera初始採集到的格式是yuv格式的,圖像繪制的時候會轉換成rgb格式的。

『拾』 android 怎麼設置yuv444

提供個思路。在java中將Surface指針傳遞到jni層,lock之後就可以獲得SurfaceInfo,進而取得要顯示的surface格式、高度、寬度,在2.2/2.3版本,surface的Format一般都是RGB565格式,只用做一個顏色空間的轉換,scaler就可以將yuv數據顯示出來。
顏色空間轉換和Scaler算是比較耗時的操作了。如何提高效率,scaler最好能交給android的底層函數去做,如果有gpu的,底層函數直接會利用gpu,效率非常高,又不佔用cpu資源。

閱讀全文

與androidyuv格式相關的資料

熱點內容
精通編程入門 瀏覽:14
99單片機原理 瀏覽:59
linuxssh互信 瀏覽:288
支持128加密的瀏覽器 瀏覽:292
程序員下載器 瀏覽:48
退出雲伺服器代碼 瀏覽:900
軍狀如命令 瀏覽:263
如何安卓系統更新 瀏覽:74
linux命令在哪裡輸入 瀏覽:497
編程語言集合類怎麼選 瀏覽:93
如何將pdf轉化為word 瀏覽:11
邁克菲隔離區解壓密碼 瀏覽:785
怎麼用偉福編譯 瀏覽:867
計算機演算法專家 瀏覽:501
什麼app清理垃圾 瀏覽:643
android流媒體伺服器 瀏覽:183
各種演算法的時間復雜度是指 瀏覽:116
幫助高考生緩解壓力 瀏覽:850
自媒體聚合APP需要什麼資質 瀏覽:487
求標准體重的演算法 瀏覽:740