How to build GStreamer

Step 1: 下載GStreamer

先到官網下載GStreamer source code
https://gstreamer.freedesktop.org/data/pkg/android/

Step 2: 下載gst-docs

cmd
1
git clone git://anongit.freedesktop.org/gstreamer/gst-docs 

Step 3: 在AndroidStudio新增Project

在此我們選擇android-tutorial-3
(gst-docs/examples/tutorials/android-tutorial-3)

Step 4: 增加 GSTREAMER_ROOT_ANDROID 路徑

在/examples/tutorials/android/android-tutorial-3/jni/Android.mk中
增加GSTREAMER_ROOT_ANDROID 路徑, 路徑為剛剛在步驟一所下載的GStreamer

Android.mk
1
2
3
4
5
6
7
include $(BUILD_SHARED_LIBRARY)

GSTREAMER_ROOT_ANDROID := /home/nick/Git/gstreamer

ifndef GSTREAMER_ROOT_ANDROID
$(error GSTREAMER_ROOT_ANDROID is not defined!)
endif

Step 5: 修改GSTREAMER_ROOT的判斷

根據支援的cpu 架構,刪除其餘的判斷式
以armv7為例

Android.mk
1
GSTREAMER_ROOT:= $(GSTREAMER_ROOT_ANDROID)/armv7

Step 6: 修改build.grade

在/examples/tutorials/android/android-tutorial-3/build.gradle中刪除gstRoot的code

刪除以下程式碼

android-tutorial-3/build.gradle
1
2
3
4
5
6
7
8
9
10
11
def gstRoot

if (project.hasProperty('gstAndroidRoot'))
gstRoot = project.gstAndroidRoot
else
gstRoot = System.env.GSTREAMER_ROOT_ANDROID

if (gstRoot == null)
throw new GradleException...

arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"

Step 7: 過濾ABI

修改build.grade

build.grade
1
2
3
4
5
6
externalNativeBuild {
ndkBuild {
targets "tutorial-3"
abiFilters 'armeabi-v7a'
}
}

Step 8:
更改/examples/tutorials/android/settings.gradle

將include ‘:android-tutorial-1’, include ‘:android-tutorial-2’
include ‘:android-tutorial-4’, include ‘:android-tutorial-5’ 刪除

Step 9: 重新編譯

編譯後,可在/examples/tutorials/android/android-tutorial-3/gst-build-armeabi-v7a中取得libgstreamer_android.so

作者

Nick Lin

發表於

2019-04-03

更新於

2023-01-18

許可協議


評論