pjsip編譯靜態庫,pjsip交叉編譯

本文目錄一覽:

如何用c++調用pjsip庫實現一個簡單的sip伺服器

1、開源的sip伺服器端,比較好用的是Asterisk,標準C程序實現,代碼清晰。

2、sip的client相對比較多,主要有exosip,pjsip和opal。exosip簡單易用,在PC上用比較方便。但是涉及的相關資源太多,用了osip,srtp,ms2等眾多的開源庫,ms2下面還用到了ffmpeg,別的不說,光編譯就是噩夢。opal功能最強,雖然也用到了ffmpeg ,但是自己封裝的非常好,採用插件方式,調用靈活。opal採用class方式提供封裝,介面非常友好。感覺唯一不爽的地方,就是低層使用了ptlib,雖然多平台下都很好用,但放在嵌入式下感覺稍龐大了一些。pjsip精巧,方便移植,嵌入式下應該是首選。不過視頻頻支持方面擴展起來比opal麻煩。個人感覺,對於windows開發者來說,pjsip最大的好處就是代碼調試方便。整個工程一次編譯通過,另外兩個庫還要找很多相關的資源

3、其他的一些協議棧也調試過,比如reSipphone,好象是這個名字,還有Yate,不過從快速開發角度看,都不太合適。現在搞sip開發的,一開始就是先找好協議棧。linphone,ekiga什麼的,但龐大。對於剛開始做的,最好是一個精簡的demo。後來找到pjsip下面的幾個例子,慢慢地了解了sip的工作流程,當然少不了抓包工具和tcpdump。

不過,其實,sip沒有想像中的那麼麻煩。現在回頭看,剛開始做項目,使用協議棧絕對不是好想法。如果換個方向,先熟悉SIP基本協議,然後自己改造一個,或完全寫一個,可能效果更好。

pjsip庫的sample怎麼用

第一步是生成 pjsip 為 Android (步驟為 Ubuntu Linux) 的源代碼:

1.設置 ANDROID_NDK_ROOT 環境變數設置為您 NDK 根文件夾。

2.轉到 pjsip 2.x 文件夾並創建 pjlib/include/pj/config_site.h 包括 config_site_sample.h ( #include pj/config_site_sample.h )

3.運行./configure-android

4.運行make clean make depend make

之後這些步驟,你將有幾個靜態庫中的幾個文件夾。我建議將它們分組相同的文件夾 (最好在您的項目中) 中的:

mkdir your_project_path/pjsip_libs

find . -name *.a | xargs -I % cp % your_project_path/pjsip_libs/

一旦你的所有庫,您需要將這些庫添加到您的項目 Android.mk 文件,這是由包括一個新的模塊節每個圖書館。此模塊部分應該是一樣的東西:

include $(CLEAR_VARS)

LOCAL_MODULE := pjsua-arm-unknown-linux-androideabi

LOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a

include $(PREBUILT_STATIC_LIBRARY)

,你其實是一節中構建您的 JNI 項目的源代碼,所有模塊都添加到您的靜態庫的引用:

LOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi …

這將包括 pjsip 的引用加入您的 JNI 庫。現在,您需要配置 pjsip UA 實例。

你有一個關於 init 和開始的解釋 pjsip 的 UA (pjsua) 在 pjsip/include/pjsua-lib/pjsua.h 但要遵循的主要步驟是:

1.創建一個具有 UA 實例pjsua_create

2.創建一個工作線程與pj_thread_create

3.UA 實例的設置的默認配置:

pjsua_config cfg 樁 ;pjsua_logging_config log_cfg ;pjsua_media_config media_cfg ;

pj_cli_cfg_default(app_config.cli_cfg.cfg) ;pjsua_logging_config_default(log_cfg) ;pjsua_media_config_default(media_cfg) ;

4.初始化堆棧與pjsua_init

5.啟動與堆棧pjsua_start

從這裡,你有充足的配置選項 (日誌、 媒體、 交通工具等)

您可以找到基本 PJSIP 教程在這裡,和裡面 pjsip 的源的根路徑,你有一個基本 (但不夠完整,基本的 SIP 使用情況) 在:pjsip-apps/src/samples/simple_pjsua.c

編輯:在生成時在 pjsip 應用程序的 android 項目,你可以面臨一個問題,因為 pjsua app 不生成默認情況下,對一般生成 (更具體地說,pjsua: 目標不包括所有上: 在 pjsip-應用程序/生成/生成文件的目標)。若要修復這只是轉到 pjsip-應用程序/創建和運行:

使 pjsua

這將創建在正確的對象文件: pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/ (需要構建 android 樣本時)。

一旦你所有相應的對象文件,您可以在 pjsip-應用程序/src/pjsua/android 系統再次運行 ndk 生成

如何在 android 設備上使用 pjsip G.729 編解碼的功能

 第一步是生成 pjsip 為 Android (步驟為 Ubuntu Linux) 的源代碼:

1.設置 ANDROID_NDK_ROOT 環境變數設置為您 NDK 根文件夾。

2.轉到 pjsip 2.x 文件夾並創建 pjlib/include/pj/config_site.h 包括 config_site_sample.h ( #include pj/config_site_sample.h )

3.運行./configure-android

4.運行make clean make depend make

之後這些步驟,將有幾個靜態庫中的幾個文件夾。建議將它們分組相同的文件夾 (最好在您的項目中) 中的:

mkdir your_project_path/pjsip_libs

find . -name *.a | xargs -I % cp % your_project_path/pjsip_libs/

一旦自己的所有庫,您需要將這些庫添加到您的項目 Android.mk 文件,這是由包括一個新的模塊節每個圖書館。此模塊部分應該是一樣的東西:

include $(CLEAR_VARS)

LOCAL_MODULE := pjsua-arm-unknown-linux-androideabi

LOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a

include $(PREBUILT_STATIC_LIBRARY)

,其實是一節中構建您的 JNI 項目的源代碼,所有模塊都添加到您的靜態庫的引用:

LOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi …

這將包括 pjsip 的引用加入您的 JNI 庫。現在,您需要配置 pjsip UA 實例。

有一個關於 init 和開始的解釋 pjsip 的 UA (pjsua) 在 pjsip/include/pjsua-lib/pjsua.h 但要遵循的主要步驟是:

1.創建一個具有 UA 實例pjsua_create

2.創建一個工作線程與pj_thread_create

3.UA 實例的設置的默認配置:

pjsua_config cfg 樁 ;pjsua_logging_config log_cfg ;pjsua_media_config media_cfg ;

pj_cli_cfg_default(app_config.cli_cfg.cfg) ;pjsua_logging_config_default(log_cfg) ;pjsua_media_config_default(media_cfg) ;

4.初始化堆棧與pjsua_init

5.啟動與堆棧pjsua_start

從這裡,有充足的配置選項 (日誌、 媒體、 交通工具等)

您可以找到基本 PJSIP 教程在這裡,和裡面 pjsip 的源的根路徑,有一個基本 (但不夠完整,基本的 SIP 使用情況) 在:pjsip-apps/src/samples/simple_pjsua.c

編輯:在生成時在 pjsip 應用程序的 android 項目,可以面臨一個問題,因為 pjsua app 不生成默認情況下,對一般生成 (更具體地說,pjsua: 目標不包括所有上: 在 pjsip-應用程序/生成/生成文件的目標)。若要修復這只是轉到 pjsip-應用程序/創建和運行:

使 pjsua

這將創建在正確的對象文件: pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/ (需要構建 android 樣本時)。

一旦所有相應的對象文件,您可以在 pjsip-應用程序/src/pjsua/android 系統再次運行 ndk 生成

linux 中pjsip中怎麼增加音頻編碼方式g729

第一步是生成 pjsip 為 Android (步驟為 Ubuntu Linux) 的源代碼:

設置 ANDROID_NDK_ROOT 環境變數設置為您 NDK 根文件夾。

2.轉到 pjsip 2.x 文件夾並創建 pjlib/include/pj/config_site.h 包括 config_site_sample.h ( #include pj/config_site_sample.h )

3.運行./configure-android

4.運行make clean  make depend  make

之後這些步驟,將有幾個靜態庫中的幾個文件夾。建議將它們分組相同的文件夾 (最好在您的項目中) 中的:

mkdir your_project_path/pjsip_libs

find . -name *.a | xargs -I % cp % your_project_path/pjsip_libs/

一旦自己的所有庫,您需要將這些庫添加到您的項目 Android.mk 文件,這是由包括一個新的模塊節每個圖書館。此模塊部分應該是一樣的東西:

include $(CLEAR_VARS)

LOCAL_MODULE := pjsua-arm-unknown-linux-androideabi

LOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a

include $(PREBUILT_STATIC_LIBRARY)

,其實是一節中構建您的 JNI 項目的源代碼,所有模塊都添加到您的靜態庫的引用:

LOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi

這將包括 pjsip 的引用加入您的 JNI 庫。現在,您需要配置 pjsip UA 實例。

有一個關於 init 和開始的解釋 pjsip 的 UA (pjsua) 在 pjsip/include/pjsua-lib/pjsua.h 但要遵循的主要步驟是:

創建一個具有 UA 實例pjsua_create

2.創建一個工作線程與pj_thread_create

3.UA 實例的設置的默認配置:

pjsua_config cfg 樁 ;pjsua_logging_config log_cfg ;pjsua_media_config media_cfg ;

pj_cli_cfg_default(app_config.cli_cfg.cfg) ;pjsua_logging_config_default(log_cfg) ;pjsua_media_config_default(media_cfg) ;

4.初始化堆棧與pjsua_init

5.啟動與堆棧pjsua_start

從這裡,有充足的配置選項 (日誌、 媒體、 交通工具等)

您可以找到基本 PJSIP 教程在這裡,和裡面 pjsip 的源的根路徑,有一個基本 (但不夠完整,基本的 SIP 使用情況) 在:pjsip-apps/src/samples/simple_pjsua.c

編輯:在生成時在 pjsip 應用程序的 android 項目,可以面臨一個問題,因為 pjsua app 不生成默認情況下,對一般生成 (更具體地說,pjsua: 目標不包括所有上: 在 pjsip-應用程序/生成/生成文件的目標)。若要修復這只是轉到 pjsip-應用程序/創建和運行:

使 pjsua

這將創建在正確的對象文件: pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/ (需要構建 android 樣本時)。

一旦所有相應的對象文件,您可以在 pjsip-應用程序/src/pjsua/android 系統再次運行 ndk 生成

編譯運行pjsip的sample出現問題

修改config_site.h文件 在pjproject-2.4.5\pjlib\include\pj目錄下 增加 #define PJMEDIA_AUDIO_DEV_HAS_ALSA 1

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/275737.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 16:06
下一篇 2024-12-17 16:06

相關推薦

  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python中通過對象不能調用類方法和靜態方法的解析

    當我們在使用Python編寫程序時,可能會遇到通過對象調用類方法和靜態方法失敗的問題,那麼這是為什麼呢?接下來,我們將從多個方面對這個問題進行詳細解析。 一、類方法和靜態方法的定義…

    編程 2025-04-27
  • Apache偽靜態配置Java

    本文將會從多個角度闡述如何在Apache中正確偽裝Java應用程序,實現URL的靜態化,提高網站的SEO優化和性能。以下是相關的配置和代碼實例。 一、RewriteEngine的配…

    編程 2025-04-27
  • 刪除靜態路由

    一、靜態路由的定義 路由(Routing)是指在一組互聯的計算機網路中,根據一定的演算法規則實現兩個節點之間選擇合適的路徑並且傳送數據包的過程。簡單來說,路由就是在網路中選擇一條可達…

    編程 2025-04-25
  • 靜態文件伺服器

    一、文件伺服器簡介 靜態文件伺服器是一個基於HTTP協議的伺服器應用程序,它旨在提供對本地或遠程文件系統中的靜態內容(包括HTML、CSS、圖像、視頻和JavaScript文件等)…

    編程 2025-04-24
  • 學生html美食靜態網頁代碼評析

    一、HTML結構 <html> <head> <title>學生美食家</title> <link rel=”styleshe…

    編程 2025-04-23
  • gcc-static: 靜態編譯的理解與應用

    一、什麼是gcc-static? gcc-static,簡稱靜態編譯器,是GCC中的一種編譯方式。靜態編譯器將源代碼編譯為二進位文件的同時,將依賴庫也打包成一個完整的可執行文件,因…

    編程 2025-04-23
  • Kotlin靜態常量的全面解析

    一、什麼是靜態常量? 在Kotlin中,可以將一個常量或靜態變數定義在一個類或對象中,這種常量或靜態變數叫做靜態常量,它們只會被初始化一次,並且在整個應用中都可以使用。靜態常量可以…

    編程 2025-04-20
  • Kotlin靜態變數詳解

    一、靜態變數定義和使用 靜態變數是指在類裡面定義的變數,它屬於類本身,而不是類的每個實例對象獨有的。在Kotlin中,我們可以使用companion object來定義一個類的靜態…

    編程 2025-04-20
  • Mock靜態方法完全指南

    在編寫程序的過程中,經常會用到靜態方法。靜態方法往往是一個固定的函數,可以直接通過類來調用,無需實例化對象。想要測試這類靜態方法,卻常常很難,因為不同的測試數據能夠引起不同的結果。…

    編程 2025-04-12

發表回復

登錄後才能評論