我已经完成了 Gstreamer 网站上的所有教程,但这非常困难。为了帮助其他人,我记录了它。这是 linux (ubuntu) 的教程,但也可以在 Windows 上运行,如果您对此有任何疑问,请询问:)... 我还将链接一个来自 gitlab 的项目,准备在 Android 中运行工作室:
(教程 5)
https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(教程 2)https://gitlab.com/eduardoprado/gstreamer-tutorial2.git
在 Android Studio 中使用库
了解 GStreamer 并将其集成到项目中的最佳方式是学习本网站中的教程:
对不起,你必须自己找到链接,我没有发布直接链接的声誉
然而,这些教程已经过时并且可以在 Eclipse 中使用,为了使用 Android Studio,需要:
1.使用 Android Studio 的 Import 选项导入教程;
2.设置Android Studio使用NDK;
3.在“Android.mk”文件中设置一个变量;
4.设置Gradle只编译部分架构;
5.将Gstreamer类复制到正确的路径。
6. 禁用 Android Studio 中的“即时运行”。 (编辑于 2017 年 10 月 27 日)
7. 修复“链接器黄金参数”(编辑于 2017 年 11 月 28 日仅限 WINDOWS 用户)
这些说明中的每一个都将在以下部分中进行解释:
1.使用 Android Studio 的 Import 选项导入教程
Android Studio 可以选择从其他 IDE 导入项目。将 Gstreamer 的项目导入 Eclipse 的步骤如下:
1. 从 git 下载所有教程:;
2. 在 Android Studio 中,转到文件 -> 新建导入项目;
3.在文件屏幕的新浏览器中,转到“gst-docs”,选择所需的项目(在我的例子中是教程5)“android-tutorial-5”并点击“OK”。
@987654323 @
2.将 Android Studio 设置为使用 NDK
现在项目已经导入,需要通知Android Studio该项目使用了NDK框架。因此,Gradle 将能够导入和处理所有依赖项。
为此,我们需要链接文件 Android.mk(已经在教程文件夹中):
1. 右击左侧导航栏的“应用”
2. 点击“Link C++ Project with Gradle”
3. 在新窗口中:
- 将“构建系统”从“CMake”更改为“ndk-build”
- 单击“...”并浏览到 Android.mk 的位置“/AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk”
- 点击确定
现在外部构建文件将出现在项目的左侧选项卡中。也会出现一些错误,属于正常现象,下节会更正。
3.在“Android.mk”文件中设置一个变量
最后一节错误发生是因为“Android.mk”找不到提取 GStreamer 的路径。因此,让我们将 GSTREAMER_ROOT_ANDROID 变量设置为提取 GStreamer 的路径。
要实现这一点:
1. 浏览左侧选项卡并展开“外部构建文件”;
2.双击Android.mk打开文件;
3. 在第 10 行,在“include $(BUILD_SHARED_LIBRARY)”下,输入:
- “GSTREAMER_ROOT_ANDROID := 路径”
- 否引号
- path 是提取 GStreamer 的路径(显然)。
之后,Gradle 将同步并显示错误“***Target arch ABI not supported: mips.Stop”。
4.设置 Gradle 只编译一些架构
最后一个部分发生错误是因为 Grade 尝试为不同的架构构建,但在 MIPS 中找不到要构建的文件。为了解决这个问题,我们将指定要构建的架构,不包括 MIPS:
1. 在左侧浏览器选项卡中,展开 Gradle Scripts;
2.双击“build.gradle(模块:app)”
3. 在“moduleName”下的行中输入:
(运行教程5)
- abiFilters 'x86'、'armeabi'、'armeabi-v7a'、'arm64-v8a'
(运行教程 2)
- abiFilters 'x86'、'armeabi-v7a'、'arm64-v8a'
(编辑 2017 年 11 月 21 日:最近我遇到了 arm64-v8a 的问题...... 64 位设备不会显示直播,我也解决了“删除 arm64-v8a”)
(编辑 3/29/2018:我意识到可能需要根据您的 Gstreamer 和 NDK 版本删除更多架构,如果它不起作用,请尝试不同的删除组合)
5.将 Gstreamer 类复制到正确的路径。
最后需要的配置是关于 Main 类中的包导入。
出现上面显示的错误是因为没有 GStreamer 类来获取“.init”函数。为了解决这个问题,我们需要从文件中复制 GStreamer 类并粘贴到指定的路径:
- 使用系统中的文件管理器浏览到您提取 GStreamer 的文件。
- 从提取的文件中,浏览到 GStreamer 类的位置。它位于 /arm/share/gst-android/ndk-build/GStreamer.java
复制 GStreamer.java
- 返回 Android Studio 并创建 Main 类尝试从左侧浏览器选项卡的 /app/java 开始访问的导入路径。因此,对于上图,我们必须创建路径 org.freedesktop.gstreamer 并将文件 GStreamer.java 粘贴到其中:
- 右键java文件夹
- 新建-> 包
- 输入 org.freedesktop.gstreamer
- 右键单击 org.freedesktop.gstreamer 并粘贴
5.导入错误现已解决,但新类有错误。要解决这些问题,您只需从复制的类中删除“@”以及位于“@”之间的所有内容。
6.从 Android Studio 禁用“即时运行”。 (编辑于 2017 年 10 月 27 日)
Android Studio 中的此功能可能会在尝试运行项目时导致问题,因此最好禁用它。
禁用“即时运行”:
1. 在 Android Studio 中,转到“文件”->“设置...”(Ctrl+Alt+S)
2.“构建、执行、部署”->“即时运行”
3.取消选中“启用即时运行以在部署时热交换代码/资源更改(默认启用)”
4. 点击“应用”
7.修复“链接器黄金参数”(仅限 WINDOWS 用户)
在尝试 Windows 时,您会收到错误:
Error:error: invalid linker name in argument '-fuse-ld=gold'
修复它:
1. 前往Android NDK Linker (GStreamer) - invalid linker name -fuse-ld=gold
2. 按照 Antoine Zambelli 的回答说明进行操作。