Articles of android ndk

Androidvideo通过ffmpeg修剪

我已经从这个链接从github下载video修剪代码。 这是第一次完美的工作,但是当我第二次尝试运行它的代码崩溃没有任何exception,然后再次尝试运行它第三次崩溃后,它的工作! 有没有人有这种行为的想法? 我也正在开发一个应用程序,它有一个剪裁video模块。 我真的很感激,如果有人能帮助我。

如何从androidstream到ffserver

我需要从一个Android摄像头/文件stream到一个远程ffserver将播放我的video。 我可以在Ubuntu的桌面上通过发出如下命令来做到这一点: ffmpeg -f video4linux2 -s 640×480 -r 25 -i /dev/video0 http://192.168.0.20:8090/cam1.ffm 或者像这样stream式传输一个文件: ffmpeg -i /home/kev/share/movie.mp4 http://192.168.0.20:8090/cam1.ffm 所以基本上我想能够从android做到上述。 经过几次search,这是我迄今为止所做的 – 我遇到这个链接http://bambuser.com/opensource从中我下载了ffmpeg源并build立它。 编译输出几个东西:1.共享库[libavcodec,libavcore,libavdevice,libavfilter,libavformat,libavutil,libswscale] 2.可执行文件[ffmpeg,ffprobe] 不知道如何插入我的function与这些资源这是我到目前为止已经尝试:1.使用System.loadLibrary()加载我的活动库,然后将ffmpeg可执行文件复制到assets文件夹,在运行时我复制到我的应用程序的“文件”目录我然后使用Runtime.getRuntime()。exec()设置可执行文件的权限。 那么最后一步是在java中使用以下语句执行它: Runtime.getRuntime().exec("ffmpeg -i file:///android_asset/movie.mp4http://<server>:8090/cam1.ffm"); 2.将ffmpeg.c,共享库和构build生成的“include”文件夹复制到我的jni文件夹中,并添加一个包裹ffmpeg.c中main()函数的jni函数。 通过这种方法,我发现自己必须从ffmpeg源文件中复制几个头文件,以便ndk-build成功,我非常怀疑这是否可行。 以上两种方法havnt为我工作,我不知道我要去哪里错了,所以任何帮助如何做一个简单的ffmpegstream如android的mp4文件将不胜感激。

如何安装Android Studio 2.2 CMake软件包/工具?

我最近的Android Studio 2.2预览3安装似乎无法findCMake。 我尝试从SDK工具安装它,但没有这样的软件包…

应用程序崩溃与本机代码

Crashed: .onlineradioapp| 0 gralloc.rk30board.so 0xb4a2d616 bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 1 gralloc.rk30board.so 0xb4a315c9 (Missing) 2 gralloc.rk30board.so 0xb48e2465 art::JValue art::interpreter::ExecuteGotoImpl<true, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue) 3 gralloc.rk30board.so 0xb4a1349d artInterpreterToInterpreterBridge 4 gralloc.rk30board.so 0xb4a2d031 bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 5 gralloc.rk30board.so 0xb48f2fef art::JValue art::interpreter::ExecuteGotoImpl<false, false>(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, […]

关于arm-eabi-gcc和交叉编译

我有一个复杂的开源库,需要移植到Android NDK。 首先,我需要configuration(./configure)。 我明白:我必须用/ home / user / android-ndk / build / prebuilt / linux-x86 / arm-eabi-4.4.0 / bin / arm-eabi-gcc进行交叉编译我想对不对? 这个工具将正确configuration一个库? 如果是,则问题2: 我试图编译这样一个库:libao。 使用这些命令: PREBUILT = / home/user/android-ndk/build/prebuilt/linux-x86/arm- eabi-4.4.0 PLATFORM = / home/user/android-ndk/build/platforms/android-3/arch-arm INSTALL = / home/user/sox-14.3.2/com export CC = "/ home/user/android-ndk/build/prebuilt/linux-x86/arm- eabi-4.4.0/bin/arm-eabi-gcc" export CFLAGS = "-fPIC-DANDROID" export LDFLAGS = "-Wl,-T, $ PREBUILT / […]

如何创buildAndroid代码和本机代码之间的callback?

我有一个要求在本地代码(C语言代码)和Android代码之间创buildcallback。 我写了JNI函数从这样的android调用C code JNI代码在这里 #include <android/log.h> void initSocket(); #ifdef __cplusplus extern "C" { #endif JNIEXPORT void JNICALL Java_org_pjsip_pjsua_pjsua_1appJNI_initSocket(JNIEnv *jenv, jclass jcls) { __android_log_write(ANDROID_LOG_INFO, " JNI CODE ", " APP INIT SOCKET"); initSocket(); } } C代码看起来像这样 void initSocket() { /// some more stuff printf(" initSocket function "); } static int worker_thread(void *unused) { /// some more […]

Q_RETURN_ARG和QQmlComponent – 组件没有准备好

我花了3天的时间仔细检查我可以在网上find关于Q_RETURN_ARG的最佳参考资料 。 我已经包含了QQmlComponent 。 当在C ++上使用它来发送一个variables来显示在QML上时,情况并不总是如他们所看到的那样。 也许是因为Qt5比较新,没有太多的资料可以依靠。 基本上,代码编译没有问题。 当我要求它运行时,它将qml页面呈现给设备没有问题,然后得到错误: QQmlComponent: Component is not ready main.cpp:33 (int main(int, char**)): Got QML return: "" 除了文件invoke.pro和myapplication.cpp之外,下面是基于这篇文章 , Qt5文档 , ICS教程 , 文章和链接的小例子的关键部分: ./myapplication.h #include <QObject> #include <QDebug> #include <QQmlComponent> class MyApplication : public QObject { Q_OBJECT public: explicit MyApplication(QObject *parent = 0); ~MyApplication(void) {} QObject *object; QQmlComponent *component; […]

用NDK编译给成功包含的头文件提供了错误

我的app.cpp: #include "app.h" #include <EGL/egl.h> #include <EGL/eglext.h> void Java_com_geek_hello_FilterStack_nativeEglSetFenceAndWait(JNIEnv* env, jobject thiz) { EGLDisplay display = eglGetCurrentDisplay(); // Create a egl fence and wait for egl to return it. // Additional reference on egl fence sync can be found in: // http://www.khronos.org/registry/vg/extensions/KHR/EGL_KHR_fence_sync.txt EGLSyncKHR fence = eglCreateSyncKHR(display, EGL_SYNC_FENCE_KHR, NULL); if (fence == EGL_NO_SYNC_KHR) { return; } […]

Gradle NDK在生成的Android.mk中指定一个'include'指令

当你有 android { defaultConfig { ndk { moduleName "yourlib" stl "stlport_static" ldLibs "log", "z", "m" cFlags "-I/some/include/dir/" } … } … } 在build.gradle中,Gradle将编译src / main / jni /中的文件,并在build / ndk / debug / Android.mk中生成一个Android.mk文件。 不过,在我的情况下,我试图编译一些针对OpenCV编译的C ++文件。 当我手动创buildAndroid.mk文件并运行ndk-build命令时,我有这个工作。 但是我想通过Gradle / Android Studio自动完成。 手动完成此操作时,我会包含要链接的库。 我在手动创build的Android.mk中执行以下操作: include /path/to/the/opencv/directory/sdk/native/jni/OpenCV.mk 但是,在Android的Gradle插件中,我不确定如何在生成的Android.mk文件中添加这个“include”指令。 任何人都可以指向我在正确的Gradle指示方向添加此行到生成文件? 谢谢。

debuggingC ++ /本机库模块不能与Android Studio一起使用(使用Cmake)

我无法debugging我的库模块的C ++文件。 这一般可能吗? 如果应用程序项目包含c ++代码,则debugging工作正常。 但是我想把C ++代码移到一个库模块中。 会话开始时的错误信息: 现在启动本机debugging会话 注意! 找不到符号目录 – 请检查您的原生debuggingconfiguration 我的lib的gradle文件: apply plugin: 'com.android.library' android { compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 21 versionCode 1 versionName "1.0" externalNativeBuild { cmake { arguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } […]