camkit工程解析_rabbit0206的博客-爱代码爱编程
最近在使用声网Agora的RTSA,想着把自己的树莓派使用起来,做个远程图传之类的功能。
RTSA不支持音视频的采集编码,仅提供通道能力,所以树莓派上的音视频采集和编码工作需要自己完成。
该文章记录比较流水账,有疑惑的同学可以在下面留言,主要记录下来防止日后遗忘了。
camkit
camkit的功能介绍这里就不做过多介绍了,csdn上有一堆科普的文章,本文尽量干货,介绍整个使用过程。
下载地址:
https://gitee.com/daiyinger/Camkit.git
该项目包含了视频的采集和编码,但是由于项目比较老,依赖的ffmpeg的库比较老,实际发现ffmpeg-3.3.1可以编译通过。
ffmpeg-3.3.1下载编译
下载编译
wget http://www.ffmpeg.org/releases/ffmpeg-3.3.1.tar.bz2
tar zxvf ffmpeg-3.3.1.tar.bz2
./configuration: --prefix=/your/install/path --enable-shared
make -j4
make install
export LD_LIBRARY_PATH=/your/install/path/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/your/install/path/lib/pkgconfig:$PKG_CONFIG_PATH
编译camkit
在安装了上述的ffmpeg-3.3.1之后,编译camkit通过
cmake -S . -B build
cmake --build build -j4
编译成功:
运行:cktool和simple_demo,发现没有x264编码库:
此时需要下载对应的libx264编码库,重新编译,很麻烦!!!
这是想到了Microsoft的vcpkg c++包管理工具,见下一章节,最终还是放弃了,原因是vcpkg在ffmpeg-3.x版本期间还不支持x64-linux的环境,为了日后通过vcpkg下载历史版本方便,还是记录下实际过程。
vcpkg(放弃)
先说放弃的原因:camkit的最新更新是2017年12月,2017年对应的ffmpeg版本是ffmpeg-3.3.1,不支持x64-linux的安装包。
由于需要依赖ffmpeg-3.3.1,所以使用Microsoft的c++包管理工具vcpkg,下载ffmpeg-3.3.1版本。
vcpkg安装ffmpeg-3.3.1
vcpkg安装
github:https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md
官网地址:https://vcpkg.io/en/getting-started.html
在线文档:https://vcpkg.readthedocs.io/en/latest/README/
package搜索:https://vcpkg.io/en/packages.html
git clone https://github.com/microsoft/vcpkg
./bootstrap-vcpkg.sh -disableMetrics
通过vcpkg安装ffmpeg-3.3.1
git log --color=always --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad)' --date=short | grep --color=never ffmpeg
git checkout 779307a10
vcpkg install ffmpeg
非常不幸,ffmpeg-3.3.3版本vcpkg并不支持
root@locakhost# vcpkg install ffmpeg
Error: invalid triplet: x64-linux
Available architecture triplets
VCPKG built-in triplets:
x64-windows-static
x86-windows-static
x86-uwp
x64-uwp
x64-windows
arm-uwp
x86-windows
VCPKG community triplets:
看来还得自己编译,留个记录,记录vcpkg的工具的使用。
cmake编译
如果可以的话:
cmake -B [build directory] -S . -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake
将 vcpkg 作为一个子模块
当您希望将 vcpkg 作为一个子模块加入到您的工程中时, 您可以在第一个 project() 调用之前将以下内容添加到 CMakeLists.txt 中, 而无需将 CMAKE_TOOLCHAIN_FILE 传递给 CMake 调用。
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
使用此种方式可无需设置 CMAKE_TOOLCHAIN_FILE 即可使用 vcpkg,且更容易完成配置工作。