目前,我正在使用Yocto/OE在i.mx6嵌入式Linux上獲得使用視頻支持編譯PJSIP。到目前爲止,我已經成功地獲得了帶有音頻工作的PJSIP。 據我所知,在Linux上你有依賴SDL2和FFMPEG和Autotools配置腳本應該設法自動檢測所有這些。 一個問題是配置腳本無法獲取SDL2的安裝位置。即使我使用with-sdl = ...輸入路徑,我注意到例如沒有找到sdl-config,所以在編譯過程中稍後編譯SDL視頻設備代碼時沒有編譯代碼。 關於FFMPEG,PJSIP是否也適用於libav?我問這個問題,因爲在Yocto中我們已經包含了libav,而對於FFmpeg我們必須創建一個自定義配方。使用Yocto嵌入式Linux上的PJSIP視頻支持
而且,因爲我無法得到的工具來自動檢測所有的依賴,我開始「冒險」來設置以下的config_site.h定義陳述自己:
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
}
注:我啓用/禁用相互獨立的定義語句。
我發現那是什麼:
- 定義PJMEDIA_VIDEO_DEV_HAS_QT:僅適用於iOS,使這並不編譯
- 定義PJMEDIA_VIDEO_DEV_HAS_OPENGL(_ES):僅適用於Android,使這並不編譯
- define PJMEDIA_VIDEO_DEV_HAS_SDL:給出編譯錯誤,也許是因爲sdl-config沒有運行?
- 定義PJMEDIA_VIDEO_DEV_HAS_FFMPEG:讓編譯,因爲缺少FFmpeg的頭文件
的錯誤所以我的問題是:
任何想法,爲什麼沒有被發現SDL2-配置?需要嗎? 我們可以爲libav切換FFmpeg嗎?爲什麼?爲什麼不? 關於OpenGL,即使我們基於i.mx6的平臺支持OpenGLES2,爲什麼我們不能使用它?爲什麼它在Android上工作,而不是在嵌入式Linux上工作?
嗨,以及我做了一些試驗和錯誤,例如我試過以下內容: '--with-sdl','--with-sdl = $ {includedir}/SDL2',' - 與 - sdl = $ {STAGING_DIR_HOST} $ {includedir}/SDL2',但沒有得到它的工作。我再次嘗試了你的建議,仍然配置腳本不會提取sdl2-config。我想我確實需要編輯congigure.ac。然而,當我嘗試相同的ffmpeg時,我確實看到Yocto中的pkg_config能夠在生成的build.mak文件中找到它,我也看到了libavcodec的額外CFLAGS等。 –
看看配置:我同意修改它以使用PKG_CHECK_MODULES(SDL,sdl),然後將SDL_CFLAGS和SDL_LIBS添加到CFLAGS和LIBS似乎是一個合理的選擇:sdl-config在yocto上不起作用。 – jku
那麼我剛剛完成建設PJSIP,但通過另一種方式(可能不那麼幹淨)。在我的dev-pc上,我編輯了aconfigure.ac文件以使用'AC_PATH_PROGS(SDL_CONFIG,sdl2-config sdl-config ,, $ with_sdl/bin/crossscripts)''。接下來我生成了一個附件:'autoconf -o aconfigure aconfigure'。然後我在Yocto中獲取pjproject源代碼,並將我的dev-pc中的aconfigure和aconfigure.ac文件複製到Yocto $ {S}文件夾中。接下來,bitbake完美無缺地工作。在目標機器上,pjsua現在列出了H263和H264編解碼器。視頻仍然無法正常工作:'!SDL_Init()錯誤:沒有可用的視頻設備。 –