【问题标题】:Start Android Java VM from native C code NDK (ffmpeg mediacodec use)从原生 C 代码 NDK 启动 Android Java VM(ffmpeg mediacodec 使用)
【发布时间】:2021-07-12 14:25:04
【问题描述】:

我设法为 armv8a api 27 使用了cross-compile ffmpeg using the NDK MediaCodec 硬件加速支持。

在设置权限、文件夹和正确设置LD_LIBRARY_PATH 等之后使用 root。我可以在终端会话 (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可见?

任何有助于Android 新手 站起来的信息将不胜感激。如果可能的话,我会在ffmpeg 代码上写一个小补丁。

我真的不想将它打包到一个应用程序中,只是为了能够测试它。

【问题讨论】:

标签: android ffmpeg android-ndk android-mediacodec dalvik


【解决方案1】:

如果您使用 AOSP 工具构建可执行文件,则可以instantiate an AndroidRuntime,这将为您提供 JVM,另请参见 app_process 命令。

为 AOSP 编译某些东西的常规方法是遵循 official instructions 并将您的可执行文件添加到构建中。但是您可以尝试使用系统标头并从您的设备(或模拟器)中提取要链接的共享库。

【讨论】:

  • 感谢您的回答!我仍在尝试找出如何使用 AOSP 工具进行编译。如果您可以提供更多详细信息,还尝试编译您的javaNative.cpp 会很棒。还是谢谢
  • 好吧,将其称为javaNative.cpp 我的会有点夸张。请注意,它现在很可能无法编译 - 在过去 5 年中,AOSP 发生了太多变化。
  • 谢谢!好吧,由于我是 android 世界的新手,我终于接受了使用 android studio 会更容易。用app_process创建一个简单的jar来调用ffmpeg作为共享库(我也得稍微修改一下)会更容易。
  • 哦,是的,在常规(Java 或 Kotlin)应用程序中工作要容易得多,除非您必须使用命令行。你也不需要root。
  • 谢谢。我从那个开始。那是我不想遵循的方法。杀死我的自豪感呵呵是的,接缝会更容易学习如何制作应用程序。感谢大家的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
相关资源
最近更新 更多