我一直试图让Gstreamer在 Android工作室工作,按照他们的教程,在这里查看:

https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html

但在最新的Android工作室中没有jni / Android.mk.我在哪里将代码放在该网页的末尾?

它应该进入CMakeLists.txt吗?或者应该有什么不同的东西?

或者我只是制作一个Android.mk文件,如果是的话,在哪里(因为没有jni文件夹,只有一个cpp文件夹)?如何告诉Android工作室在哪里可以找到我的Android.mk文件?

谢谢!

解决方法

我已经从Gstreamer的网站上做了所有教程,但是很难.为了帮助另一个人,我记录了它.这里是linux(ubuntu)的教程,但也可以在windows上工作,如果你有任何疑问,请问:)…我还将链接一个项目从gitlab准备好在Android Studio中运行:(教程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的导入选项导入教程;
2.将Android Studio设置为使用NDK;
3.在“Android.mk”文件中设置变量;
4.设置Gradle只编译一些架构;
5.将Gstreamer类复制到正确的路径.
6.从Android Studio禁用“Instante Run”. (编辑10/27/2017)
7.修复“链接器黄金参数”(仅限WINDOWS用户编辑11/28/2017)

以下各节将解释这些说明中的每一条:

1.使用Android Studio的导入选项导入教程

Android Studio可以选择从其他IDE导入项目.要将对Eclipse进行的Gstreamer项目导入以下步骤:
1.从git下载所有教程:;
2.在Android Studio中,转到文件 – >新进口项目;
3.在新的文件浏览器屏幕中,转到“gst-docs”,选择所需的项目(在我的案例教程5中)“android-tutorial-5”并点击“确定”.

2.将Android Studio设置为使用NDK

现在项目已导入,需要通知Android Studio项目使用NDK框架.因此,Gradle将能够导入和处理所有依赖项.
为此,我们需要链接文件Android.mk(已在教程文件夹中):
1.右键单击左侧导航选项卡中的“app”
2.单击“使用Gradle链接C项目”
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.浏览左侧选项卡,展开“External Build FIles”;
2.双击Android.mk打开文件;
3.在第10行,在“include $(BUILD_SHARED_LIBRARY)”下,键入:
– “GSTREAMER_ROOT_ANDROID:= path”
– 没有引号
– path是显然提取GStreamer的路径.
Gradle将同步后,将显示错误“***目标拱ABI不支持:mips.停止”.

4.设置Gradle只编译一些架构

发生最后一部分错误是因为Grade尝试为不同的体系结构构建,但它找不到要在MIPS中构建的文件.要解决此问题,我们将指定要构建的体系结构,不包括MIPS:
1.在左侧浏览器选项卡中,展开Gradle Scripts;
2.双击“build.gradle(Module:app)”
3.在“moduleName”下的行中输入:(运行教程5)
– abiFilters’x86′,’armeabi’,’armeabi-v7a’,’arm64-v8a’
(运行教程2)
– abiFilters’x86′,’arm64-v8a’
(编辑11/21/2017:最近我遇到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 Folder
>新 – >包
>输入org.freedesktop.gstreamer
>右键单击org.freedesktop.gstreamer并粘贴
5.现在已解决导入错误,但新类有错误.要解决这些问题,您只需从复制的类中删除“@”以及位于“@”之间的所有内容.

6.从Android Studio禁用“Instante Run”. (编辑27/10/2017)
Android Studio中的此功能可能会在尝试运行项目时出现问题,因此禁用它是一个好主意.
禁用“Instante Run”:
1.在Android Studio上转到“文件” – > “设置…”(Ctrl Alt S)
2.“构建,执行,部署” – > “即时奔跑”
3.取消选中“在部署时启用即时运行以热插拔代码/资源更改(默认启用)”
4.点击“应用”

7.修复“链接器黄金参数”(仅限WINDOWS用户)

尝试使用Windows时,您将收到错误消息:
错误:错误:参数’-fuse-ld = gold’中的链接器名称无效
要解决这个问题:
1.转到Android NDK Linker (GStreamer) – invalid linker name -fuse-ld=gold2.按照Antoine Zambelli的回答说明进行操作.

Android Studio中的Gstreamer示例的更多相关文章

  1. 使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果

    这篇文章主要介绍了基于HTML5实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios – 如何调整标签栏徽章位置?

    我在标签栏上显示徽章,但是当数字增加时,它会转到标签栏项目,如图所示我想稍微向左移动徽章视图,使其适合选定的选项卡image.i尝试如here所述,但没有运气.那么有没有办法调整徽章视图位置?任何帮助将不胜感激.解决方法我发现Kateryna的答案对于让我走上正轨非常有用,但我必须稍微更新一下:请注意,选项卡整数不是零索引,因此第一个选项卡将是数字1,第二个选项卡将是2,等等.

  3. ios – UITabBarController – Child(Tab)ViewControllers的不正确和不一致的边界

    我有一个带有两个选项卡的UITabBarController.每个选项卡都是UITableViewController.当UITabBarController出现时,两个选项卡视图都有不正确的边界.第一个选项卡正确位于导航栏下方,但延伸到底部的选项卡栏下方.第二个选项卡是另一种方式,从导航栏下方开始,但在底部的选项卡栏之前正确停止.我正在创建和呈现TabBarController,如下所示:然后在

  4. xcode – 隐藏或丢失构建阶段选项卡

    ..构建阶段选项卡.如何使用工具栏中的“构建阶段”选项卡显示布局,并将其保存以用于我的项目?顺便说一句,我使用XCode3.2可能是版本限制?解决方法听起来这些教程适用于Xcode4.对于您的版本,如果您在侧边栏中打开目标,则应该有一些组.这些是你的构建阶段.只需将库拖到类似“LinkExecutable”之类的库中,或单击复选框将其添加到目标,它应该自动进入.

  5. ios – 单击UITabBarController时的自定义操作

    我有一个标签栏控制器,它添加了四个导航控制器.导航控制器在选项卡栏控制器中显示为选项卡栏项目.现在我想在标签栏中添加第五个按钮,它不会打开另一个视图,但会触发一些自定义代码.我想在单击该标签栏项目时显示重叠的“共享菜单”,无论用户在哪四个页面中.我怎样才能做到这一点?

  6. iOS 7.1问题 – Tabbar调整大小不起作用

    自从我更新到iOS7.1后,选项卡的大小调整不再起作用:此代码导致选项卡向上移动,但下方有一些空白区域.任何人都可以解决这个问题?

  7. 缺少ios开发签名身份(null)

    当我尝试生成ipa文件时,我收到此错误.无法解决.请帮我解决此错误:我有自己的帐户,在我的钥匙链中访问它的鞋子像这样:我没有使用新的Mac,我已经创建了ipa.Day.但今天无法做到.我也有.cer个人资料.它有效解决方法这是Apple发表的声明.Thanksforbringingthistotheattentionofthecommunityandapologiesfortheissuesyou

  8. ios – 存档期间不存在Xcode环境变量

    我有一个具有TestFlight构建方案的iOS应用程序.在此方案中,我在“运行”选项卡中设置了一个称为TESTFLIGHT的环境变量,值为1.此外,在构建方案的“配置文件”选项卡中,它已选中“使用RUn操作的参数和变量”选项,并在列表中看到相应的EV.当从Xcode运行应用程序时,这可以正常工作,但是当我在存储设备上运行应用程序时,环境变量TESTFLIGHT不存在.我的问题是有一个我在这里缺少的选项/方案选项卡?

  9. ios – 如何正确地从一个Tab到另一个Tab的数据

    当我通过模拟器中的段落时,我在控制台中收到以下消息:任何帮助将不胜感激!).您可以尝试以下方法:

  10. ios – 使用AFNetworking未共享扩展的成功/失败回调

    我有一个共享扩展中的AFNetworking的问题.在didSelectPost中,我打电话:[AuthClientsharedClient]使用单例模式获取具有背景标识符的NSURLSessionConfiguration的AFHTTPSessionManager实例.但是,无论是成功还是失败的回调都被调用,它将无限期挂起,直到扩展被杀死.有趣的是,HTTP请求在服务器端完成;完成从未被调用.解

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部