【问题标题】:Is there any way to port ffmpeg command to Android without root the device?有没有办法在没有root设备的情况下将ffmpeg命令移植到Android?
【发布时间】:2012-06-19 08:17:18
【问题描述】:

此链接http://www.roman10.net/how-to-port-ffmpeg-the-program-to-androidideas-and-thoughts/ 谈论将 ffmpeg 命令移植到 Android。

谁能描述得更详细些?

我的目的是记录用户在 Android 设备上的行为并保存为包含用户声音的视频文件。

【问题讨论】:

    标签: android ffmpeg screen capture


    【解决方案1】:

    为 android 构建 FFMPEG 作为分片库并使用 Android NDK 在您的 android 应用程序中使用它,为此您不需要设备上的 root 权限。它像其他构建库一样工作。

    看看这个 SO Question FFMPEG on Android

    【讨论】:

    • 我已经构建了库并将其转换为 JNI。调用ffmpeg.c的main函数。但是截屏需要读取/dev/graphics/fb0。我可以在模拟器中更改 /dev/graphics/fb0 的权限,但不能在设备中更改。您的示例只是播放视频。它不读取 /dev/graphics/fb0。
    • 首先,我不知道使用帧缓冲区截屏。好的,现在你必须获得设备的 root 权限(没有 root 是不可能的)。此外,您对帧缓冲区具有读取权限。试试 chmod 777 ..
    • @user1429903 我遇到了类似的问题。我想在 android 上运行 ffmpeg 命令。如果我只是调用 ffmpeg.c 的主要部分,我可以在 android 上使用 ffmpeg 命令吗???我需要在 ffmpeg.c 的 main 中添加什么以便我可以运行命令?我必须构建可执行文件吗?你能提供一些参考吗? Roman10 博客对我没有帮助,
    【解决方案2】:

    FB 文件 /dev/graphics/fb0 归 root 所有,组设置为 graphics。由于常规的 android 应用程序不属于图形组,因此它们无法读取它。

    要解决此问题,您可以创建一个使用 ffmpeg 库(静态)的本机应用程序(不是 JNI 应用程序,而是本机可执行文件),并使用 $adb push 命令通过 ADB 安装它。此二进制文件将由“shell”ID 所有,但属于图形组。这样就可以直接读取 FB。

    您可以编写您的 Java 应用程序以与此二进制文件(通过套接字)通信并控制它。 ASL (Android Screenshot Library) 做了类似的事情,但不使用 ffmpeg 而是直接捕获屏幕截图。参考http://code.google.com/p/android-screenshot-library/

    【讨论】:

    • 本机可执行文件你能简单介绍一下吗?
    • 本机可执行文件 - 这是一个常规的 linux 应用程序(通常是基于 C/C++ 的应用程序),被构建为直接在 linux 层运行。参考 [这里][kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html] 了解如何使用 Android 的 NDK 工具包作为常规编译器并生成可以直接在 linux 层运行的独立二进制文件。构建二进制文件后,使用“adb push”将二进制文件复制到 android 设备(通常是 /data/local 或 4.x 系统上的 /data/local/tmp),然后使用“adb shell ”运行它
    • 我知道。实际上,我只是想将它与常规的 .so 文件区分开来,以获取 SO 视角。无论如何谢谢。
    • 哦,好吧。这两种方法的主要区别在于它们运行的​​权限。如果您在应用程序中构建 SO 并通过 JNI 加载它,那么 SO 也会以与您的应用程序相同的权限级别运行,这是非常有限的(例如:您无法读取帧缓冲区)。但是,如果您构建一个本机可执行文件并通过“adb push”将其安装到设备上并运行它,您将以“shell”用户身份运行并属于图形组,并拥有更好的权限(例如:读取帧缓冲区) .
    • 是的,我在我的一个项目中应用了同样的东西。适用于 Android 设备屏幕共享应用程序。 :-)
    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多