GStreamer安装——Android

news2024/11/28 7:40:32

Android安装

支持所有从2.3.1Gingerbread开始的版本

先决条件

开发机器是您开发Android应用程序的地方,然后您将其部署在目标机器上,目标机器显然应该是Android设备。

开发机器可以是Linux、Mac OS X或Windows,并且需要安装:

  • 最新版本的Android SDK
  • 正确版本的安卓NDK对应的版本 GStreamer二进制文件使用(f. ex.,r18b1.16.x)
  • GStreamer for Android针对的是API版本9(Android2.3.1,Gingerba)或更高版本。使用SDK管理器工具确保您至少安装了一个API版本9或更高版本的Android SDK平台。

在继续之前,请确保您可以编译和运行示例 包含在Android NDK中,并且您了解如何集成 C和Java通过Java本机接口(JNI)工作。除了 Android NDK留档,你可以找到一些有用的Android JNI提示在这里。

下载并安装GStreamer二进制文件

GStreamer项目提供了您应该下载的预构建二进制文件 最新版本并将其解压缩到您选择的任何文件夹中。

在构建支持GStreamer的Android应用程序的过程中, 一些工具需要知道您将GStreamer安装在哪里 二进制文件。您必须定义一个名为 GSTREAMER_ROOT_ANDROID并将其指向您所在的文件夹 提取了GStreamer二进制文件。此环境变量必须在 构建时间,所以也许你想让它在系统范围内可用 将其添加到您的~/.profile文件(在Linux和Mac上)或 系统属性对话框中的环境变量(在Windows上)。

GSTREAMER_ROOT_ANDROID指向解压缩二进制文件的文件夹。

如果你打算使用Android Studio,不想定义这个 全局环境变量,您可以在build. gradle中设置它。

如果您计划使用Eclipse,并且不想定义它 全局环境变量,您可以在Eclipse中设置它。去 窗口→首选项→C/C++→构建→构建变量并定义 GSTREAMER_ROOT_ANDROID那里。

使用的Gradle构建系统中的NDK支持 Android Studio仍处于测试阶段,因此推荐的构建方式 使用GStreamer SDK仍然是使用“ndk-build”。

配置您的开发环境

在Android应用程序中使用GStreamer有两种途径:用Java或C编写GStreamer代码。

Android应用程序主要用Java编写,所以添加GStreamer 用相同的语言向他们编码是一个巨大的优势。然而,这 需要为GStreamer API使用语言绑定,而不是 完成了。与此同时,这个留档将使用Java GStreamer代码的用户界面(UI)部分和C。两部分 通过JNI互动。

构建教程

教程代码在 GST-docs在 examples/tutorials/文件夹。

有几个Android特定的教程在tutorials/ 文件夹。每个教程都是一个包含源代码的文件夹(Java和 C)以及构建完整Android所需的资源文件 应用。

其余GStreamer教程(基本和播放教程)未经修改无法在Android上运行。

支持GStreamer的Android项目像传统的一样构建 安卓NDK项目,所以在安卓NDK家的说明可以 被遵循:

使用Eclipse

确保您已安装先决条件部分中列出的ADT和NDK插件,并且它们都知道Android SDK和NDK的位置。

将教程导入Eclipse工作区: 文件→新建→项目…→现有代码中的Android项目,然后选择 文件夹名为android-tutorial-1

在项目中读取并生成一些额外的文件和文件夹后,Eclipse可能会抱怨缺少文件。这很正常,我们还没有完成。

通过激活NDK插件提供原生开发支持: 右键单击Project Explorer中的项目(这应该是 最上面的文件夹, 称为com.gst_sdk_tutorials.tutorial_1.Tutorial1)→Android 工具→添加本机支持…这里NDK插件要求提供库名称。 这无关紧要,任何有效的文件名都可以。接受。

Eclipse仍然会抱怨代码中的错误。这很正常。有些文件丢失了,因为它们是在第一次构建运行期间生成的。

构建项目:项目→构建项目。如果您打开Eclipse控制台,您应该会看到一些进度消息。完成后,将出现缺失的文件,所有错误消息都应该消失了。项目现在可以运行了。点击运行→运行。

您的设备上现在应该可以使用名为“Android教程1”的新应用程序,并带有GStreamer徽标。如果您想在Android虚拟设备(AVD)中运行本教程,请确保创建支持音频播放和GPU仿真的设备(以启用OpenGL ES)。

使用命令行

请注意,在Windows上,此过程需要一个工作的Cygwin 外壳,如Android NDK系统要求

对于每个教程,移动到其文件夹并运行:

android update project -p . -s --target X

其中X是系统中可用的目标之一 与SDK管理器一起安装)。确保使用至少具有 API级别9。

要获取系统中所有可用目标的列表,请发出以下命令:

android list

"update project"命令生成build.xml文件 构建系统。您只需要每个项目执行一次此操作。

要构建C部分,只需调用:

ndk-build

Android.mk文件中的几行(稍后回顾)拉起 编译GStreamer位并生成 Java代码可以作为本机使用的共享对象库(. so) 方法。

最后,编译Java代码:

ant debug

并在设备上安装:

adb install -r bin/Tutorial1-debug.apk

通过-r开关,安装程序可以覆盖以前的版本。 否则,您需要手动卸载以前版本的 应用。

您的设备上现在应该可以使用名为“Android教程1”的新应用程序,并带有GStreamer徽标。如果您想在Android虚拟设备(AVD)中运行本教程,请确保创建支持音频播放和GPU仿真的设备(以启用OpenGL ES)。

Windows链接问题

由于与标准链接器相关的问题,Google的 Gold Linker用于构建GStreamer应用程序。不幸的是, 适用于Windows的Android NDK工具链不包括金链接器 必须使用标准的。

如果您观察到链接问题,您可以更换您的链接器 安卓NDK与这个项目中的金色。下载 android-ndk-r8b-ma-windows.7z文件,提取 \android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\arm-linux-androideabi\bin\ld.exe (只需要此文件)并覆盖同一文件夹中的文件 您的Android NDK安装。您可能需要免费的7-Zip存档实用程序

从命令行使用gradle

编辑示例/教程/android/gradle.properties以设置gstAndroidRoot以指向未打包的GStreamer Android二进制文件。

然后,要构建教程并将其部署到您的设备,请使用类似于以下命令的命令:

$ cd examples/tutorials/android
$ PATH=~/dev/android/tools/bin:~/dev/android/ndk-bundle:$PATH ANDROID_HOME="$HOME/dev/android/" ./gradlew installDebug

要构建和部署单个教程:

$ cd examples/tutorials/android
$ GSTREAMER_ROOT_ANDROID=/path/to/gst-android-1.14/ PATH=~/dev/android/tools/bin:~/dev/android/ndk-bundle:$PATH ANDROID_HOME="$HOME/dev/android/" ./gradlew :android-tutorial-1:installDebug

要运行应用程序,您可以直接从设备或命令行启动它:

$ adb shell am start -n adb shell am start -n org.freedesktop.gstreamer.tutorials.tutorial_1/.Tutorial1

要在运行时查看GStreamer日志:

$ adb logcat | egrep '(gst)'
使用Android工作室

编辑示例/教程/android/gradle.properties以设置gstAndroidRoot以指向未打包的GStreamer Android二进制文件。

启动Android工作室,打开示例/教程/android/作为一个项目。

该项目应该自动构建,一旦成功完成,应该可以运行运行>运行“教程X”的教程,前提是连接了设备并启用了USB调试。

日志可以在logcat选项卡中看到。

创建新项目

创建一个普通的NDK项目,如所述从命令行 在Android NDK主页,或使用Eclipse: File→New→Project… →Android应用程序项目,并且,一旦向导完成,对 单击项目→Android工具→添加原生支持…

要添加GStreamer支持,您只需修改 jni/Android.mk文件。此文件描述了您的 项目,及其准系统结构(由Eclipse自动生成)是:

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NativeApplication
LOCAL_SRC_FILES := NativeApplication.c

include $(BUILD_SHARED_LIBRARY)

其中第5行指定.so文件的名称,该文件将包含您的 本机代码和第6行说明构成本机的所有源文件 代码,以空格分隔。

添加GStreamer支持只需要添加以下行:

Android.mkGStreamer支持

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NativeApplication
LOCAL_SRC_FILES := NativeApplication.c
LOCAL_SHARED_LIBRARIES := gstreamer_android
LOCAL_LDLIBS := -landroid

include $(BUILD_SHARED_LIBRARY)

ifndef GSTREAMER_ROOT
ifndef GSTREAMER_ROOT_ANDROID
$(error GSTREAMER_ROOT_ANDROID is not defined!)
endif
GSTREAMER_ROOT            := $(GSTREAMER_ROOT_ANDROID)
endif

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/
GSTREAMER_PLUGINS         := coreelements ogg theora vorbis videoconvert audioconvert audioresample playback glimagesink soup opensles
G_IO_MODULES              := gnutls
GSTREAMER_EXTRA_DEPS      := gstreamer-video-1.0

include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk

其中第7行指定要包含在项目中的额外库: libgstreamer_android.so.此库包含所有GStreamer代码, 为您的应用程序需求量身定制,如下所示。

在这种情况下,第8行指定了其他系统库,以便访问android特定的功能。

第12行和第13行简单地定义了一些方便的宏。

第20行列出了您想要静态链接到的插件 libgstreamer_android.so.只列出您需要的商品 应用程序更小。

第21行需要从GStreamer获得HTTPS/TLS支持,通过 souphttpsrc元素。

第22行定义了您的应用程序需要哪些GStreamer库。

最后,第24行包括执行其余魔术的make文件。

列出所有所需的插件可能很麻烦,因此它们已被分组 分类,可以通过包含plugins.mk文件来使用, 并使用如下:

include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
GSTREAMER_PLUGINS  := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_CODECS) playbin souphttpsrc
类别和包含的插件列表
CategoryIncluded plugins
GSTREAMER_PLUGINS_COREcoreelements adder app audioconvert audiorate audioresample audiotestsrc gio pango typefindfunctions videoconvert videorate videoscale videotestsrc volume autodetect videofilter
GSTREAMER_PLUGINS_PLAYBACKplayback
GSTREAMER_PLUGINS_VISlibvisual goom goom2k1 audiovisualizers
GSTREAMER_PLUGINS_EFFECTSalpha alphacolor audiofx cairo cutter debug deinterlace dtmf effectv equalizer gdkpixbuf imagefreeze interleave level multifile replaygain shapewipe smpte spectrum videobox videocrop videomixer accurip aiff audiofxbad autoconvert bayer coloreffects debugutilsbad fieldanalysis freeverb frei0r gaudieffects geometrictransform inter interlace ivtc rawparse removesilence segmentclip smooth speed soundtouch videofiltersbad audiomixer compositor webrtcdsp
GSTREAMER_PLUGINS_NETtcp rtsp rtp rtpmanager soup udp dataurisrc sdp srtp rtspclientsink
GSTREAMER_PLUGINS_NET_RESTRICTEDrtmp
GSTREAMER_PLUGINS_CODECSsubparse ogg theora vorbis opus alaw apetag audioparsers auparse avi dv flac flv flxdec icydemux id3demux isomp4 jpeg matroska mulaw multipart png speex taglib vpx wavenc wavpack wavparse y4menc adpcmdec adpcmenc dashdemux dvbsuboverlay dvdspu hls id3tag kate midi mxf openh264 opusparse pcapparse pnm rfbsrc schro gstsiren smoothstreaming subenc videoparsersbad y4mdec jpegformat gdp rsvg openjpeg spandsp sbc androidmedia
GSTREAMER_PLUGINS_CODECS_GPLassrender
GSTREAMER_PLUGINS_CODECS_RESTRICTEDasfmux dtsdec faad mpegpsdemux mpegpsmux mpegtsdemux mpegtsmux voaacenc a52dec amrnb amrwbdec asf dvdsub dvdlpcmdec mad mpeg2dec xingmux realmedia x264 lame mpg123 libav
GSTREAMER_PLUGINS_SYSopensles opengl
GSTREAMER_PLUGINS_CAPTUREcamerabin
GSTREAMER_PLUGINS_ENCODINGencodebin
GSTREAMER_PLUGINS_GESnle

构建并运行您的应用程序,如构建教程部分所述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1816042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】常用的分类算法代码实现

文章目录 任务&数据集一、基算法1.1 决策树(Decision Tree)1.2 逻辑回归(Logistic Regression)1.3 支持向量机(Support Vector Machine, SVM) 二、集成算法2.1 随机森林(Random Forest&…

哪个牌子洗地机最好?四款甄选佳品安利,质量放心

作为一个熟悉智能清洁家电的行业者,洗地机可谓是实用性最高的地面清洁工具,这个实用性一方面是清洁力强,它集合了扫地和拖地能力,另一方面是操作方便,清洁速度快。可是面对市面上种类繁多的智能清洁家电,往…

【Python】已完美解决:(Python键盘中断报错问题) KeyboardInterrupt

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例(结合实战场景)五、注意事项 已解决:Python中处理KeyboardInterrupt(键盘中断)报错问题 一、问题背景 在Python编程中,当我们运…

晨持绪科技:抖音网店怎么做有前景

在数字时代的浪潮中,抖音平台以其独特的魅力和庞大的用户基础成为电商的新阵地。开设一家有前景的抖音网店,不仅需要对市场脉搏有敏锐的洞察力,还需融合创新思维与数据驱动的营销策略。 明确定位是成功的先声。深入分析目标消费群体的需求与偏…

SpringCash

文章目录 简介引入依赖常用注解application.yml使用1. 启动类添加注解使用方法上添加注解 简介 Spring Cache是一个框架,实现了基于注解的缓存功能底层可以使用EHCache、Caffeine、Redis实现缓存。 注解一般放在Controller的方法上,CachePut 注解一般有…

【Java面试】十九、并发篇(下):线程池

文章目录 1、为什么要使用线程池2、线程池的执行原理2.1 七个核心参数2.2 线程池的执行原理 3、线程池用到的常见的阻塞队列有哪些4、如何确定核心线程数开多少个?5、线程池的种类有哪些?6、为什么不建议用Executors封装好的静态方法创建线程池7、线程池…

虚拟化 之七 详解构造带有 jailhouse 的 openEuler 系统

构造一个默认带有 jailhouse 的 openEuler 系统实际上就是创建一个包含 jailhouse 软件包的 openEuler 发行版,创建的过程在 x86 和 嵌入式平台差距很大,因此,本文我们分别进行详细介绍。 x86_64 平台 对于 x86_64 平台,如果手动从头创建(参考 Linux From Scratch)一个自…

Kubernetes 集群架构

etcd 集群状态存储:etcd 存储所有 Kubernetes 对象的状态,例如部署、pod、服务、配置映射和机密。配置管理:集群配置的更改存储在 etcd 中,允许 Kubernetes 管理和维护集群的所需状态。 注意:etcd 可能位于 kube-syst…

【ARM Cache 与 MMU/MPU 系列文章 2.1 -- 什么是 Cache PoP 及 PoDP ?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 PoP 及 PoDPCache PoDPCache PoP应用和影响PoP 及 PoDP Cache PoDP 点对深度持久性(Point of Deep Persistence, PoDP)是内存系统中的一个点,在该点达到的任何写操作即使在系统供电…

git下载项目登录账号或密码填写错误不弹出登录框

错误描述 登录账号或密码填写错误不弹出登录框 二、解决办法 控制面板\用户帐户\凭据管理器 找到对应的登录地址进行更新或者删除 再次拉取或者更新就会提示输入登录信息

Linux服务器安装Jupyter,并设置公网访问详细教程

本章教程,主要介绍如何在Linux服务器上安装jupyter,并可以通过公网地址进行访问。 一、安装jupyter pip install jupyter二、生成jupyter配置文件 jupyter notebook --generate-config三、编辑这个配置文件 找到配置文件并修改以下配置项: # 允许所有 IP 地址访问 c.Noteb…

nodejs湖北省智慧乡村旅游平台-计算机毕业设计源码 00232

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,旅游行业当然也不能排除在外。智慧乡村旅游平台是以实际运用为开发背景,运用软件工程开发方法,采…

【ai】blender4.1 安装插件

开源软件,所以资料充足插件及配置 下载插件插件是python开发的 编辑中的偏好设置 点击选中 点击一键切换中文英文 切换主题 插件源码

卸载MySQL5.0,安装MySQL8.0

卸载MySQL 1、以管理员身份运行cmd,删除MySQL服务 2、卸载MySQL 3、删除残余文件 4、清楚注册表 winR -> regedit 5、删除环境变量 安装MySQL步骤 官方下载地址 https://www.mysql.com/downloads/ 以上步骤即完成MySQL数据库安装。

XSKY 在金融行业:新一代分布式核心信创存储解决方案

近日,国家金融监督管理总局印发了《关于银行业保险业做好金融“五篇大文章”的指导意见》,在数字金融领域提出明确目标,要求银行业保险业数字化转型成效明显,数字化经营管理体系基本建成,数字化服务广泛普及&#xff0…

SaaS企业营销:如何通过联盟计划实现销售增长?

联盟营销计划在国外saas行业非常盛行,国内如何借鉴国外的成功案例运用联盟计划实现销售增长呢?林叔今天以最近新发现的leadpages为例分享下经验。 Leadpages是一款用户友好的落地页制作工具,提供多种预设计模板、A/B测试和分析功能&#xff0…

【嵌入式DIY实例】-Nokia 5110显示DHT11/DHT22传感器数据

Nokia 5110显示DHT11/DHT22传感器数据 文章目录 Nokia 5110显示DHT11/DHT22传感器数据1、硬件准备2、代码实现2.1 显示DHT11数据2.2 显示DHT22数据本文介绍如何将 ESP8266 NodeMCU 开发板 (ESP-12E) 与 DHT11 数字湿度和温度传感器以及诺基亚 5110 LCD 连接。 NodeMCU 从 DHT11…

EMI电路

PFC 功率部分 1 、整流桥是串联 2 、 PFC 电感串联 3 、二极管并联 4 、 MOSFET 并联 EMI电路图

2024年山西泵管阀展览会11月8日开展

2024中国(山西)国际水务科技博览会 暨水处理技术设备与泵管阀展览会 时间:2024年11月8-10日 地点:山西潇河国际会展中心 经研究,由山西省水处理行业协会、山西省水暖阀门商会、山西省固废产业协会联合主办的2024…