1.UVC Camera使ç¨ç®åè®°å½
2.ijkplayer编译流程详解
UVC Camera使ç¨ç®åè®°å½
ç¨åºæ¯æ ¹æ® UVCCamera å»ä¿®æ¹çã
使ç¨è¿ç¨ä¸éå°çå ç¹å ³é®é®é¢ï¼
1.YUV æ ¼å¼ï¼NVçæ ¼å¼ã
2.YUV转RGBæçé®é¢ã
3.Bitmapå åæ³æ¼é®é¢ã
4.Handlerå åæ³æ¼çé®é¢
é¦å onFrame(è¿æ¯cameraåå¾çcallBackå½æ°ï¼byte[] dataå°±æ¯cameraçæ°æ®)ä¸ä¸è½åèæ¶æä½ï¼ä¾å¦å°data转bitmapçæä½ï¼ï¼ä¸ç¶ä¼é»å¡ï¼ä¹åæè¿ä¸ªæä½æ¾å°è¿éç¶åç´æ¥å°bitmapä¼ åºï¼å¯¼è´å¡é¡¿ã
å¨ä¼ è¾byte[]æ°æ®ä¹åï¼éè¦å°byte[]转bitmapã
å¨byte[] 转bitmapçè¿ç¨ä¸ï¼ç±äºå建äºè¿å¤çBitmapï¼ä¼å¯¼è´å åæ³æ¼ï¼ç¨åºå´©æºã
å æ¤1.å°Bitmap设置为éæåéï¼é¿å éå¤å建çé®é¢ã2.ä¿®æ¹byte[] 转bitmapçå½æ°ï¼åæ¥å½æ°æ¯è¿åBitmapï¼ç°å¨æ¯å°Bitmapä½ä¸ºåæ°ä¼ å ¥å½æ°ä¸ï¼ç´æ¥å°Bitmapæ°æ®ä¼ éåºå»ãåå°äºä¸ä¸ªè¿åçæ¥éª¤ã
ä¹åæ¯è¿æ ·çï¼
ç°å¨æ¯è¿æ ·çï¼
åé¢å°±æ¯éè¿handleImageå°Bitmapæ¾ç¤ºå¨ImageViewä¸ã
NV转bitmapçé®é¢ã
æçç¨åºåºæ¬æ¯æ ¹æ® UVCCamera å»ä¿®æ¹çï¼UVCCameraä¸æ²¡æåæ¯ä¸å¸§ï¼ä½æ¯çææ¥å£ï¼æè¿é设å®æ¯ä¸å¸§çæ°æ®ä¸ºNVæ ¼å¼ã
并ä¸å¨onFrameä¸ååºçdataæ ¼å¼æ¯NVï¼NVæ¯YUVä¸çä¸ä¸ªï¼YUVæå¾å¤æ ¼å¼ï¼ï¼å æ¤å¨è½¬æbitmapçæ¶åï¼éè¦æ ¹æ®å ¬å¼å»è½¬åãç¨ç³»ç»èªå¸¦çRenderScriptå»è½¬æ¢ï¼åç°å¾çè½ç¶æ¸ æ°ä½æ¯é¢è²ä¸å¯¹ã
æ¥æ¾yuv转bitmapå½æ°ï¼æ¾å°çæ¯è¿ä¸ªãä¾æ§æ¯è½¬åºæ¥çå¾çï¼é常ææ¾ï¼æåå¾æ¸ æ°ï¼ä½æ¯å°±æ¯é¢è²ä¸å¯¹ã
å æ¤å¯¹å½æ°è¿è¡äºä¿®æ¹ãä¿®æ¹åå¦ä¸æ示ã
ç±äºå¯¹YUVä¸RGBè¿ä¸ªæ¦å¿µæ¨¡ç³ä¸æ¸ ï¼èæç´¢å¾å°çYUV转bitmapå½æ°æ¯è½ç¶çç¡®æ¯NV转bitmapï¼ä½è½¬æ¢åæè²å·®ãåä¿®æ¹rgba[]çèµå¼é¡ºåºåï¼é¢è²ææ£å¸¸ãå ¶å®å°±æ¯å¨ç±YUVç¼ç 转RGBç¼ç çè¿ç¨ä¸ï¼æ°æ®ä¼ éåºç°é®é¢æ导è´è²å½©å¼å¸¸ï¼è¿ç§æ åµå°±éè¦ä¸æ¥æ¥åæYUVå°RGBçæ°æ®è½¬æ¢ä¸åªéåºç°äºé®é¢ãä¹åæ¯åå¨ä¸ºABGRï¼åé¢ææ¯åå¨ä¸ºARGBã
å ·ä½åæå¯ä»¥çè¿ç¯ï¼
RGBåYUVç®åå¦ä¹ è®°å½
ä½æ¯ä¸é¢è¿ç§æ¹å¼å®é 使ç¨ä¸åç°æçè¿ä½ãå æ¤éè¦ä½¿ç¨soçæ¹å¼å»è½¬æ¢ã
å ·ä½åèé¾æ¥ï¼
libyuvâlibyuvæµè¯ä½¿ç¨ARGBToIåConvertToARGBæ¥å£
_example_libyuv_Test_convertToArgbå½æ°ä¸çFOURCC_IYUVæ¹ä¸ºFOURCC_NVã
Handleå åæ³æ¼çé®é¢ã
ä¹åå 为æ³å·ææ以没æå¤çAndroid studioå ³äºHandleå åæ³æ¼çæ示ãç¶å让ç¨åºè·äºä¸å¤©æç¶å´©äºã
ä¹åæ¯å¦ä¸æ示ï¼è¿ç§åæ³Android Studioä¼æç¤ºä½ è¿æ¯æé£é©çã
ç°å¨æ¹æå¦ä¸æ示
å ¶å®è¿å¯éè¿å¨activityçdestroyä¸è°ç¨ handler.removeCallbacksAndMessages(null) ï¼æ¥è¾¾å°é¿å å åæ³æ¼çç®ç,源码android ç³»ç»æºç ä¸ä¹åºæ¬æ¯ä½¿ç¨è¿ä¸ªæ¹æ³ã
åè®°ï¼è¿ç¯æç« å§äºå¹´ï¼å½æ¶æ¯ç¨äºåç®USBæå头ä¸ï¼æè¿å¨æ´çä¸è¥¿æ以å®åäºä¸ä¸ã
åèé¾æ¥ï¼
Android yuv转æ¢æbitmap
å¾æ详解YUVæ°æ®æ ¼å¼
Androidä¸çYUVæ ¼å¼è§£æ
Nv转Bitmapï¼é«æç转åï¼
Android ä¹ Bitmap
Android解æä¹Handler为ä»ä¹éè¦æ¯staticç
ijkplayer编译流程详解
ijkplayer是一款基于FFmpeg的播放器SDK开源架构,由哔哩哔哩公司开发,源码适合音视频开发人员深入研究与使用。源码本文将详细介绍ijkplayer的源码视频页面源码编译流程。 本文主要关注于在安卓平台上的源码编译,以ijkplayer-android为例,源码环境设定在Ubuntu系统上。源码一、源码编译环境与依赖
系统:Ubuntu ..6
jdk:Java Development Kit (JDK) 1.8.0_
ndk:Android NDK re(Linux x_版)
sdk:Android SDK r.4.1(Linux版)
二、源码编译环境搭建
软件安装:确保Ubuntu系统已安装必要的源码开发工具。
openjdk安装:下载并安装JDK,源码星球重启源码以支持Java环境。源码
下载安装NDK和SDK:访问Android NDK与SDK官网,源码下载Linux版本,源码解压至指定目录。源码
初始化SDK:运行Android SDK Manager,筹码跟庄源码选择下载Android SDK Tools、Platform-tools、Build-tools以及最新版的Platform。
配置环境变量:在/etc/profile中添加相关环境变量。
三、视频捕捉源码ijkplayer源码下载
访问ijkplayer的GitHub仓库,下载ijkplayer-android源代码。
四、编译ijkplayer
初始化:运行初始化脚本,提取ffmpeg库、loadsh源码讲解libyuv、soundtouch等相关组件。
编译openssl:执行编译脚本,选择全平台编译或指定CPU平台。
编译ffmpeg:在配置文件中保持默认设置,执行编译脚本。
编译ijkplayer:执行最后的编译脚本,生成android工程与平台相关库。
五、编译完成与导入AS工程
使用Android Studio打开生成的android工程。
运行工程至手机上,检查播放功能,确保编译无误。
至此,ijkplayer的编译流程已完成。开发者可以在此基础上进行二次开发,深入探索ijkplayer的特性和应用。