他们社区的编辑器真的很弱啊…
首先, 这个板子特点就是便宜, 然后最重要的支持很少, 资料一般, 很多人在群里问很基础的问题, 就写个开箱文章吧.
目标是能跑rkmedia_vi_venc_rtsp_test, 用vlc可以看到推流.
那么从编译到推流, 一共分几步??
- 安装ubuntu18 64bit版本虚拟机
- 下载sdk, rv1126_rv1109_linux_sdk_v1.8.0.0_PuerVersion.tar.gz 这个版本, 亲测有效.
- 使用刷机工具, 刷机
- 在Ubuntu里面安装编译环境
sudo apt update
sudo apt upgrade
sudo apt install -y repo gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip gawk bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev expect fakeroot cmake flex bison liblz4-tool libtool keychain expect-dev
- 把sdk复制到ubuntu, 解压, 设置一下运行环境跟目标开发板的类型
./envsetup.sh 选78 rockchip_rv1126_rv1109
./build.sh lunch 选4 BoardConfig-aybering.mk
- 然后尝试编译uboot, kernel, rootfs
./build.sh uboot
./build.sh kernel
./build.sh rootfs
-
接下来在ubuntu里面安装免费的vscode, 并安装喜欢的控件:
Atom One Dark Them
C/C++
Rainbow Brackets
github copilot(可选)
eclipse keymap(可选) -
用vscode打开external/rkmedia目录
-
修改example里面的Makefile文件, 这个是重头戏.
hide := @
ECHO := echo
# 这里是交叉编译的地址, 要根据你sdk所在的实际路径修改
GCC := /home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc-8.3.0
# 这里要指定buildroot的编译器根目录
SYSROOT = /home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/buildroot/output/rockchip_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot
# 下面要指定rkaiq库的头文件位置
CFLAGS := -I../include/rkmedia \
-I/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/camera_engine_rkaiq/include/common \
-I/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/camera_engine_rkaiq/include/xcore \
-I/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/camera_engine_rkaiq/include/uAPI \
-I/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/camera_engine_rkaiq/include/algos \
-I/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/camera_engine_rkaiq/include/iq_parser
LIB_FILES := -L$(SYSROOT)/usr/lib \
-L/home/marc/rv1126_rv1109_linux_sdk_v1.8.0_20210224/external/rkmedia/examples/librtsp/
# 后面要加入rtsp库
LD_FLAGS := -lpthread -leasymedia -ldrm -lrockchip_mpp \
-lavformat -lavcodec -lswresample -lavutil \
-lasound -lv4l2 -lv4lconvert -lrga \
-lRKAP_ANR -lRKAP_Common -lRKAP_3A \
-lmd_share -lrkaiq -lod_share -lrtsp
CFLAGS += -DRKAIQ
SAMPLE_COMMON := common/sample_common_isp.c
# 要编译的源文件就是rkmedia_vi_venc_rtsp_test.c, 最后形成的可执行文件在build/rkmedia_vi_venc_rtsp_test目录, 你可以手动建一个这个目录
all:
$(GCC) rkmedia_vi_venc_rtsp_test.c $(SAMPLE_COMMON) $(LIB_FILES) $(LD_FLAGS) $(CFLAGS) -o build/rkmedia_vi_venc_rtsp_test --sysroot=$(SYSROOT)
# $(GCC) helloworld.c $(SAMPLE_COMMON) $(LIB_FILES) $(LD_FLAGS) $(CFLAGS) -o build/helloworld --sysroot=$(SYSROOT)
$(hide)$(ECHO) "Build Done ..."
-
提示Build Done … 没报错, 就成功了
-
用usb线把板子的otg的口, 跟ubuntu连起来, 在ubuntu里面用apt install adb, 安装adb, 装完之后用adb devices看看能找到这个adb设备不, 不行的话看看otg是否映射到了ubuntu虚拟机上
-
用adb push rkmedia_vi_venc_rtsp_tes /userdata/rkmedia_vi_venc_rtsp_tes 把app直接推到开发板上, 当然你可以用nfs.
-
在开发板上跑这个app的时候, 后面要加一个 -a, 即
chmod +x rkmedia_vi_venc_rtsp_tes
./rkmedia_vi_venc_rtsp_tes -a
这样屏幕上就会滚动
恭喜你推流成功
- 回到ubuntu, 拿usb网卡, 一条网线, 连到开放板 ,如果你的开发板没有该过ip, 地址就应该是192.168.100.75, 把你的usb网卡的ip设置到这个网段, 直到确定能ping通你的开发板.
- 然后apt install vlc, 使用这个串流地址播放: rtsp://192.168.100.75/live/main_stream
- 哎呀妈, 出画面了…
附上一张我摄像头的接法: 摄像头是imx415