[英]PJSIP video support on embedded Linux using Yocto
目前,我正在使用Yocto / OE在i.mx6嵌入式Linux上通過視頻支持來編譯PJSIP。 到目前為止,我已經成功使PJSIP具有音頻功能。 據我了解,在Linux上,您對SDL2和FFMPEG具有依賴性,並且Autotools配置腳本應設法自動檢測所有它們。 一個問題是,配置腳本無法在安裝SDL2的位置進行安裝。 即使我使用with-sdl =…輸入路徑,例如,我也會注意到找不到sdl-config,因此在以后的編譯過程中,不會編譯任何SDL視頻設備代碼。 關於FFMPEG,PJSIP也可以與libav一起使用嗎? 我問這個問題,因為在Yocto中我們已經包含了libav,而對於FFmpeg,我們將必須創建一個自定義配方。
此外,由於無法獲得自動檢測所有依賴關系的工具,因此我自己在config_site.h中設置以下define語句開始變得“冒險”:
do_configure_prepend () {
export LD="${CC}"
echo "export CFLAGS += -D_REENTRANT -I${STAGING_INCDIR}/SDL2" > user.mak
echo "export LDFLAGS += -lSDL2" >> user.mak
echo "export LDFLAGS += -lGLESv2" >> user.mak
bbnote "enabling video support"
echo "#define PJMEDIA_HAS_VIDEO 1" > ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_OPENGL 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_OPENGL_ES 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_SDL 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_QT 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_FFMPEG 1" >> ${S}/pjlib/include/pj/config_site.h
}
注意:我啟用/禁用了彼此獨立的define語句。
我發現的是:
所以我的問題是:
為什么找不到sdl2-config的任何想法? 需要嗎? 我們可以將FFmpeg切換為libav嗎? 為什么? 為什么不? 關於OpenGL,即使我們基於i.mx6的平台支持OpenGLES2,我們為什么也不能使用它? 為何它可以在Android而不是嵌入式Linux上運行?
我可以猜測為什么找不到sdl-config:這些特定於項目的腳本實際上在交叉編譯的情況下永遠無法使用,並且通常在Yocto中不使用。 您應該使用“ --with-sdl”(或通過修改configure.ac以使用PKG_CHECK_MODULES()來查找sdl)。
為什么很難說“ --with-sdl”對您不起作用(因為您沒有顯示您嘗試過的內容),但是假設他們想要一個帶前綴的路徑,我希望它能起作用:
--with-sdl=${STAGING_DIR_HOST}${prefix}
STAGING_DIR_HOST是當前要構建的系統的sysroot:如果配方DEPENDS中包含libsdl,則在運行configure時,它應該位於sysroot中。
某些Yocto版本具有libav而不是ffmpeg,您應該能夠依賴於Yocto所擁有的版本,並使用上述“ --with-ffmpeg”。
關於Linux上的PJSIP支持的問題可能值得另一個問題-或者在存在的支持論壇上嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.