小弟最近再研究Android上的SIP視訊通話,但編譯上一直出現問題。
PJSIP使用官方的編譯包
FFmpeg使用GitHub上的編譯包
編譯工具:MacBook Pro
PJSIP版本:2.12.1
FFMpeg版本:5.1
FFmpeg編譯指令
export ANDROID_SDK_HOME=/Users//Library/Android/sdk/
export ANDROID_NDK_HOME=/Users//Library/Android/sdk/ndk/21.4.7075529
<ffmpeg編譯包路徑>/ffmpeg-android-maker.sh -abis=arm64-v8a -android=24
編譯完成後會產生arm64-v8a的lib內容如下
PJSIP編譯設定(config_site.h)
PJSIP編譯指令
export ANDROID_NDK_ROOT=/Users//Library/Android/sdk/ndk/21.4.7075529
NDK_TOOLCHAIN_VERSION=clang TARGET=arm64-v8a APP_PLATFORM=android-24 ./configure-android --use-ndk-cflags --with-ffmpeg=<ffmpeg編譯後產生的lib路徑>
make dep && make clean && make
錯誤訊息
後來發現在.configure-andorid時就判斷avpixelformat為no了
這問題找了好一陣子,想請問有沒有大大有遇到類似的問題?是如何排除的?
跪求大大指點。
這個問題可能是由於編譯FFmpeg時沒有包含AVPixelFormat所在的lib文件導致的。你可以嘗試在FFmpeg編譯時增加以下選項來解決此問題:
--enable-avresample
這個選項會包含libavresample lib文件,這個庫文件包含了AVPixelFormat。
如果仍然無法解決問題,你可以嘗試使用pkg-config命令檢查是否有缺少的lib文件。輸入以下命令:
pkg-config --modversion libavutil
如果顯示版本號,表示已安裝。否則,你需要安裝它。
pkg-config --list-all | grep avcodec
如果顯示類似以下的結果:
libavcodec libavcodec - FFmpeg audio/video codec library
則表示已安裝libavcodec lib文件。
你可以透過這個方法,檢查是否有缺少lib文件,進而找到解決辦法。