linphone原始碼下載及下載失敗解決方法
linphone是一款跨平臺的給予SIP協議網路電話開源框架支援Android、IOS、Windows等平臺。
一、linphone原始碼下載
原始碼有多平臺版本可供下載,官方網址:
linphone-desktop:
git clone git://git.linphone.org/linphone-desktop.git –recursivelinphone-iphone:
git clone git://git.linphone.org/linphone-iphone.git –recursivelinphone-android:
git clone git://git.linphone.org/linphone-android.git –recursivelinphone-windows10:
git clone git://git.linphone.org/linphone-windows10.git –recursivelinphone-bb10:
git clone git://git.linphone.org/linphone-bb10.git –recursive
但上面下載方法非常慢,而且可能中途下載失敗。
我的下載方式是番習習土嗇,大家都懂的。我的是用VPS+shadowsocks-Qt5+proxychains 。
關於VPS+shadowsocks-Qt5+proxychains的內容不是本文重點,所以不在這裡介紹,有興趣的可以自行搜尋。
但遇到的問題是即使是使用番習習土嗇,雖然會出現下載失敗。所以,下面以下載linphone-android原始碼為例介紹下下載失敗解決方法。
用代理下載:
proxychains git clone git://git.linphone.org/linphone-android.git --recursive
二、linphone原始碼下載失敗解決方法
1)下載失敗問題1之正常模組如ffmpeg:
解決方法1:
依次執行下面命令,可繼續接著下載,類似斷點續傳的意思:
git submodule sync
git submodule update --init --recursive
如果用的是VPS+shadowsocks-Qt5+proxychains,記得加下proxychains,加快下載速度。
proxychains git submodule sync
proxychains git submodule update --init --recursive
2)下載失敗問題2之特殊模組openh264:
解決方法2:
下載openh264模組(https://github.com/cisco/openh264)git地址,與其他大部分模組git地址是linphone官方git://git.linphone.org/XXX.git的不同,用代理的方式無法下載。所以,此時,用上面解決方法1無論嘗試多少次結果都是下載失敗。因此,下載openh264模組不走代理,直接用git clone:
git clone https://github.com/cisco/openh264
3)下載失敗問題3之特殊模組mswebrtc:
解決方法3:
模組mswebrtc有點特殊,因為用從git://git.linphone.org/mswebrtc.git地址下載submodules/mswebrtc後,會接著從git://git.linphone.org/webrtc.git地址下載其子模組submodules/mswebrtc/webrtc,但因為沒有這個子模組路徑,所以無法clone。
因為mswebrtc資料夾裡的webrtc內容下載失敗,但其他內容是全的,所以,只要把缺少的webrtc內容下載下來就好了。
git clone git://git.linphone.org/webrtc.git
或者走代理,速度快
proxychains git clone git://git.linphone.org/webrtc.git
4)下載失敗問題4之分模組下載:
下載失敗一般都是submodules中模組下載中斷,所以比較通用的解決方案是一個模組一個模組的下載,缺哪個下哪個。各模組的下載地址可以在.gitmodules檔案中找到。如模組ffmpeg下載失敗,則可以通過下面命令挽回:
git clone git://git.linphone.org/ffmpeg.git submodules/externals/ffmpeg --recursive
或者走代理,速度快
proxychains git clone git://git.linphone.org/ffmpeg.git submodules/externals/ffmpeg --recursive
下面是linphone-android中.gitmodules檔案內容:
[submodule “submodules/linphone”]
path = submodules/linphone
url = git://git.linphone.org/linphone.git
[submodule “submodules/externals/gsm”]
path = submodules/externals/gsm
url = git://git.linphone.org/gsm.git
[submodule “submodules/externals/speex”]
path = submodules/externals/speex
url = git://git.linphone.org/speex.git
[submodule “submodules/externals/ffmpeg”]
path = submodules/externals/ffmpeg
url = git://git.linphone.org/ffmpeg.git
ignore = dirty
[submodule “submodules/externals/x264”]
path = submodules/externals/x264
url = git://git.linphone.org/x264.git
ignore = dirty
[submodule “submodules/msx264”]
path = submodules/msx264
url = git://git.linphone.org/msx264.git
[submodule “submodules/externals/opencore-amr”]
path = submodules/externals/opencore-amr
url = git://git.linphone.org/opencore-amr.git
ignore = dirty
[submodule “submodules/msamr”]
path = submodules/msamr
url = git://git.linphone.org/msamr.git
[submodule “submodules/externals/libvpx”]
path = submodules/externals/libvpx
url = git://git.linphone.org/libvpx.git
ignore = dirty
[submodule “submodules/bzrtp”]
path = submodules/bzrtp
url = git://git.linphone.org/bzrtp.git
[submodule “submodules/externals/srtp”]
path = submodules/externals/srtp
url = git://git.linphone.org/srtp.git
[submodule “submodules/mssilk”]
path = submodules/mssilk
url = git://git.linphone.org/mssilk.git
[submodule “submodules/bcg729”]
path = submodules/bcg729
url = git://git.linphone.org/bcg729.git
[submodule “submodules/belle-sip”]
path = submodules/belle-sip
url = git://git.linphone.org/belle-sip.git
[submodule “submodules/externals/antlr3”]
path = submodules/externals/antlr3
url = git://git.linphone.org/antlr3.git
ignore = dirty
[submodule “submodules/externals/libxml2”]
path = submodules/externals/libxml2
url = git://git.gnome.org/libxml2.git
ignore = dirty
[submodule “submodules/externals/libupnp”]
path = submodules/externals/libupnp
url = git://git.linphone.org/libupnp.git
[submodule “submodules/externals/opus”]
path = submodules/externals/opus
url = git://git.linphone.org/opus.git
ignore = dirty
[submodule “submodules/mswebrtc”]
path = submodules/mswebrtc
url = git://git.linphone.org/mswebrtc.git
[submodule “submodules/msopenh264”]
path = submodules/msopenh264
url = git://git.linphone.org/msopenh264.git
[submodule “submodules/externals/openh264”]
path = submodules/externals/openh264
url = https://github.com/cisco/openh264
ignore = dirty
[submodule “submodules/mscodec2”]
path = submodules/mscodec2
url = git://git.linphone.org/mscodec2.git
[submodule “submodules/bctoolbox”]
path = submodules/bctoolbox
url = git://git.linphone.org/bctoolbox.git
[submodule “submodules/externals/mbedtls”]
path = submodules/externals/mbedtls
url = git://git.linphone.org/mbedtls.git
ignore = dirty
[submodule “submodules/cmake-builder”]
path = submodules/cmake-builder
url = git://git.linphone.org/linphone-cmake-builder.git
[submodule “submodules/externals/bv16-floatingpoint”]
path = submodules/externals/bv16-floatingpoint
url = git://git.linphone.org/bv16-floatingpoint.git
[submodule “submodules/belr”]
path = submodules/belr
url = git://git.linphone.org/belr.git
[submodule “submodules/belcard”]
path = submodules/belcard
url = git://git.linphone.org/belcard.git
[submodule “submodules/bcunit”]
path = submodules/bcunit
url = git://git.linphone.org/bcunit.git
[submodule “submodules/externals/vo-amrwbenc”]
path = submodules/externals/vo-amrwbenc
url = git://git.linphone.org/vo-amrwbenc.git
[submodule “submodules/externals/codec2”]
path = submodules/externals/codec2
url = git://git.linphone.org/codec2
[submodule “submodules/externals/libjpeg-turbo”]
path = submodules/externals/libjpeg-turbo
url = git://git.linphone.org/libjpeg-turbo.git
[submodule “submodules/mediastreamer2”]
path = submodules/mediastreamer2
url = git://git.linphone.org/mediastreamer2.git
[submodule “submodules/oRTP”]
path = submodules/oRTP
url = git://git.linphone.org/ortp.git
[submodule “submodules/bcmatroska2”]
path = submodules/bcmatroska2
url = git://git.linphone.org/bcmatroska2.git