解析炬思X5实时YUV数据流

 

iOS版本:

1.  准备好相机脚本fmcam.conf(点此链接下载脚本模板),放入相机,等待相机连接Wi-Fi。脚本格式如下:

router_ssid=foream(连接Wi-Fi的名字)

router_password=foream123(连接Wi-Fi的密码)

qrcode_type=17

stream_type=tcp

2.  下载TcpStreamDecode-iOS.zip,解压。

3.  用Xcode编译运行TcpStreamDecode,根据上线的X5相机的IP地址输入拉流地址,相机拉流的格式为”tcp://相机IP:8001”

4.  提取YUV数据的相关代码在convertFrameToRGB这个方法里

 IMG_256

Android版本:

1.  准备好相机脚本fmcam.conf(点此链接下载脚本模板),放入相机,等待相机连接Wi-Fi。脚本格式如下:

 router_ssid=foream(连接Wi-Fi的名字)

router_password=foream123(连接Wi-Fi的密码)

qrcode_type=17

stream_type=tcp

2.  下载TcpStreamDemo-android.zip,解压。

3.  用Android Studio编译并运行TcpStreamDemo,根据上线X5相机的IP地址输入拉流地址,相机拉流的格式为”tcp://相机IP:8001”。

4.  TcpStreamDemo代码中使用基于FFMpeg编译的JNI库,编译步骤如下:

1) 参照ijkplayer代码库https://github.com/bilibili/ijkplayer上的编译步骤

编译前,修改编译配置,使编译出的库文件支持tcp流,tcp流支持 ,打开config/module-lite.sh 文件,在list-demuxers 下增加一行

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=h264" 

2) 将编译出的ffmpeg库文件放入StreamView项目中,在终端运行./gradlew build,带编译完成后,再打包成jar文件,在终端运行./gradlew exportJar,打包生成的jar文件即TcpStreamDemo项目中的jar文件。  

IMG_257

5.  获取YUV帧数据的相关代码如下:   

IMG_258

6. SDK源码下载

1) 封装库文件的编译代码StreamView下载

2) Demo代码下载