android - 从原生 C 代码 NDK 启动 Android Java VM(ffmpeg mediacodec 使用)

标签 android ffmpeg android-ndk android-mediacodec dalvik

我设法 cross-compile ffmpeg using the NDK对于带有 MediaCodec 的 armv8a api 27硬件加速支持。
设置权限、文件夹和正确设置后使用root LD_LIBRARY_PATH等等。我可以在终端 session (ssh)上毫无问题地运行它。除非我不尝试使用 -hwaccel选项。
如果尝试使用 -hwaccel 运行某些东西, 喜欢:

ffmpeg -rtsp_transport tcp -an -hwaccel mediacodec -c:v hevc_mediacodec -i rtsp://user:pass@192.168.0.100:554/onvif1 -f null - -benchmark
我收到关于 No Java virtual machine 的错误信息.
...
Input #0, rtsp, from 'rtsp://user:pass@192.168.0.100:554/onvif1':
  Metadata:
    title           : H.265 Video, RtspServer_0.0.0.2
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: hevc (Main), yuv420p(tv, bt470bg), 1920x1080 [SAR 1:1 DAR 16:9], 10 fps, 10 tbr, 90k tbn, 10 tbc
    Stream #0:1: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s
[amediaformat @ 0x7e2ea27300] No Java virtual machine has been registered
[hevc_mediacodec @ 0x7e2eb44f00] Failed to create media format
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (hevc_mediacodec) -> wrapped_avframe (native))
Error while opening decoder for input stream #0:0 : Generic error in an external library
有没有可能开始 (创建还是启动?)直接从 C 代码中创建 Dalvik Java VM?我什至不知道这些是否是正确的术语。使其对 ffmpeg 可见?
任何有助于 的信息安卓新手站起来将不胜感激。如果可能的话,我会在 ffmpeg 上写一个小补丁。代码。
我真的不想把它打包到一个应用程序中,只是为了能够测试它。

最佳答案

如果您使用 AOSP 工具构建可执行文件,您可以 instantiate an AndroidRuntime ,这将为您提供 JVM,另请参阅 app_process命令。
为 AOSP 编译的常规方法是遵循 official instructions并将您的可执行文件添加到构建中。但是您可以尝试使用系统 header 并从您的设备(或模拟器)中提取要链接的共享库。

关于android - 从原生 C 代码 NDK 启动 Android Java VM(ffmpeg mediacodec 使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67144215/

相关文章:

java - FirebaseListAdapter 无法将 java.lang.String 类型的对象转换为 foo.bar.ChatMessage 类型

ffmpeg - 静止图像到视频以供存储 - 但返回静止图像以供查看

batch-file - Ffmpeg - 感叹号停止水印

node.js - 为什么我的 S3 存储桶中的视频没有缓冲到 html 视频标签?

安卓大号 | libusb_init 返回 LIBUSB_ERROR_OTHER (-99)

android - 在运行时更新启动器图标

Android BLE 扫描与 UUID 过滤器列表混淆

android-studio - 通过 Cmake 为 Android Studio 调试构建开启编译器优化

android - Android 工具栏中的中心布局

android - 从 android 应用程序运行 C 二进制文件 : particulare case