Cordova 和 3PP 原生媒体播放器库在 Android 中提供致命信号 11

Posted

技术标签:

【中文标题】Cordova 和 3PP 原生媒体播放器库在 Android 中提供致命信号 11【英文标题】:Cordova and 3PP Native Media Player Library gives Fatal Signal 11 in Android 【发布时间】:2014-05-15 07:01:32 【问题描述】:

我正在尝试将第三方产品本地媒体播放器集成为 Cordova 插件。这给我带来了很多让他们一起玩的问题。我已经写了一个解释,试图尽我所能总结我对这个问题的了解。只是想我会先写这个作为一个简短的介绍。非常感谢任何和所有提示和答案。由于大小限制,我将在此线程中发布参考成功运行作为另一篇文章。我也会在这里以及解释后发布我的问题:

问题

那么我的问题是:你们中的任何人有任何经验可以帮助解决这个问题吗?任何有关 3PP 原生视频和 Cordova 的内容都可能非常有帮助。


上图试图以某种方式解释 cordova 应用程序的层次结构。这当然是一种简化,很可能是不正确的,因为它旨在代表我对系统的理解,以供文中参考。

我们正在努力做的事情

我们的应用程序开始通过网络视图中的本机视频播放器播放安全和加密的视频流。这就是它的简短形式。更详细地说:今天我们有一个基本的 IPTV 网络应用程序。但是 html5 视频播放器无法处理我们的加密流。相反,我们将使它成为一个 Cordova/Phonegap 插件,其中 Web 应用程序仍然是主应用程序,但将 html5 视频播放器替换为原生 3pp 库并显示它正在播放视频(清晰(未加密/打开)流。对用户它的外观和感觉仍应相同,但解密和播放完全由本机 cordova 插件处理。然后适当放置播放表面视图以进行显示。

我们做了什么

我们已经创建了 cordova 项目,让它运行 Web 应用程序并创建了一个插件结构。我们还创建了包装第三方产品库的粗略 VideoPlayer(目前还没有控制输入,只播放一组视频)。它管理大约 50% 的播放时间,并且当它完成时,会显示表面并按我们想要的方式播放视频。但是,在对本机库执行初始播放命令期间,大约有一半的时间会出现停止执行的错误。

发生了什么

(从日志输出中删除了与 3PP 和公司相关的名称,作为附录,我将包含成功运行的日志以供参考)

05-14 13:55:18.682  17515-17515/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Late-enabling CheckJNI
05-14 13:55:18.682  17515-17515/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Try to disable coredump for pid 17515
05-14 13:55:18.822  17515-17515/se.zxzzxzxz.videoplayer I/CordovaLog﹕ Changing log level to DEBUG(3)
05-14 13:55:18.822  17515-17515/se.zxzzxzxz.videoplayer I/CordovaLog﹕ Found start page location: http:// local network adress:8888/androidindex.html
05-14 13:55:18.822  17515-17515/se.zxzzxzxz.videoplayer D/Whitelist﹕ Unlimited access to network resources
05-14 13:55:18.822  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ CordovaActivity.onCreate()
05-14 13:55:18.842  17515-17515/se.zxzzxzxz.videoplayer I/dalvikvm﹕ Could not find method org.apache.cordova.CordovaWebView.setWebContentsDebuggingEnabled, referenced from method org.apache.cordova.CordovaWebView.setup
05-14 13:55:18.842  17515-17515/se.zxzzxzxz.videoplayer W/dalvikvm﹕ VFY: unable to resolve static method 9717: Lorg/apache/cordova/CordovaWebView;.setWebContentsDebuggingEnabled (Z)V
05-14 13:55:18.842  17515-17515/se.zxzzxzxz.videoplayer D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x00be
05-14 13:55:19.052  17515-17515/se.zxzzxzxz.videoplayer I/webclipboard﹕ clipservice: android.sec.clipboard.ClipboardExManager@2110fd50
05-14 13:55:19.082  17515-17515/se.zxzzxzxz.videoplayer D/CordovaWebView﹕ CordovaWebView is running on device made by: samsung
05-14 13:55:19.092  17515-17515/se.zxzzxzxz.videoplayer D/JsMessageQueue﹕ Set native->JS mode to 2
05-14 13:55:19.092  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ CordovaActivity.init()
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/CordovaWebView﹕ >>> loadUrl(http:// local server adress:8888/androidindex.html)
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/PluginManager﹕ init()
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/CordovaWebView﹕ >>> loadUrlNow()
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/WebView﹕ loadUrlImpl: called
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer I/CordovaLog﹕ Changing log level to DEBUG(3)
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer I/CordovaLog﹕ Found start page location: http:// local server adress:8888/androidindex.html
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/Whitelist﹕ Unlimited access to network resources
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ Resuming the App
05-14 13:55:19.142  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ CB-3064: The errorUrl is null
05-14 13:55:19.172  17515-17515/se.zxzzxzxz.videoplayer D/SoftKeyboardDetect﹕ Ignore this event
05-14 13:55:19.192  17515-17544/se.zxzzxzxz.videoplayer V/webkit﹕ BrowserFrame constructor: this=Handler (android.webkit.BrowserFrame) 2110c420
05-14 13:55:19.212  17515-17544/se.zxzzxzxz.videoplayer D/webcore﹕ CORE loadUrl: called
05-14 13:55:19.212  17515-17544/se.zxzzxzxz.videoplayer D/webkit﹕ Firewall not null
05-14 13:55:19.212  17515-17544/se.zxzzxzxz.videoplayer D/webkit﹕ euler: isUrlBlocked = false
05-14 13:55:19.232  17515-17515/se.zxzzxzxz.videoplayer D/libEGL﹕ loaded /vendor/lib/egl/libEGL_POWERVR_SGX544_115.so
05-14 13:55:19.272  17515-17515/se.zxzzxzxz.videoplayer D/libEGL﹕ loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX544_115.so
05-14 13:55:19.312  17515-17515/se.zxzzxzxz.videoplayer D/libEGL﹕ loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX544_115.so
05-14 13:55:19.362  17515-17515/se.zxzzxzxz.videoplayer D/OpenGLRenderer﹕ Enabling debug mode 0
05-14 13:55:19.362  17515-17515/se.zxzzxzxz.videoplayer D/WebView﹕ onSizeChanged - w:1280 h:775
05-14 13:55:19.402  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ onMessage(onPageStarted,http:// local server adress:8888/androidindex.html)
05-14 13:55:19.402  17515-17515/se.zxzzxzxz.videoplayer D/SoftKeyboardDetect﹕ Ignore this event
05-14 13:55:19.772  17515-17515/se.zxzzxzxz.videoplayer D/CordovaLog﹕ http:// local server adress:8888/js/bundle.js: Line 9764 : initializing mediaplayer
05-14 13:55:19.772  17515-17515/se.zxzzxzxz.videoplayer I/Web Console﹕ initializing mediaplayer:9764
05-14 13:55:19.862  17515-17515/se.zxzzxzxz.videoplayer D/CordovaLog﹕ http:// local server adress:8888/js/bundle.js: Line 10659 : [object Object]
05-14 13:55:19.862  17515-17515/se.zxzzxzxz.videoplayer I/Web Console﹕ [object Object]:10659
05-14 13:55:19.872  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ onMessage(spinner,stop)
05-14 13:55:19.892  17515-17515/se.zxzzxzxz.videoplayer D/TilesManager﹕ Starting TG #0, 0x637bb530
05-14 13:55:19.892  17515-17515/se.zxzzxzxz.videoplayer D/TilesManager﹕ new EGLContext from framework: 613fcac0
05-14 13:55:19.892  17515-17515/se.zxzzxzxz.videoplayer D/GLWebViewState﹕ Reinit shader
05-14 13:55:19.892  17515-17515/se.zxzzxzxz.videoplayer D/GLWebViewState﹕ Reinit transferQueue
05-14 13:55:19.952  17515-17544/se.zxzzxzxz.videoplayer I/GATE﹕ <GATE-M>DEV_ACTION_COMPLETED</GATE-M>
05-14 13:55:19.952  17515-17515/se.zxzzxzxz.videoplayer D/CordovaWebViewClient﹕ onPageFinished(http:// local server adress:8888/androidindex.html)
05-14 13:55:19.952  17515-17515/se.zxzzxzxz.videoplayer D/CordovaActivity﹕ onMessage(onPageFinished,http:// local server adress:8888/androidindex.html)
05-14 13:55:19.952  17515-17515/se.zxzzxzxz.videoplayer D/CordovaLog﹕ http:// local server adress:8888/js/bundle.js: Line 11295 : Received Event: deviceready
05-14 13:55:19.952  17515-17515/se.zxzzxzxz.videoplayer I/Web Console﹕ Received Event: deviceready:11295
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ Attached
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ se.zxzzxzxz.videoplayer.VideoPlayer@21102cd8
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ onCreate
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ onCreateView
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ com.android.internal.policy.impl.PhoneLayoutInflater@21103958
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer W/ResourceType﹕ No package identifier when getting name for resource number 0x009a2112
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ android.widget.FrameLayout21133b68 V.E..... ........ 0,0-320,150 #9a2112
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ onActivityCreated
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ onStart
05-14 13:55:19.972  17515-17515/se.zxzzxzxz.videoplayer I/VideoPlayer﹕ onResume
05-14 13:55:20.032  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ SurfaceView created
05-14 13:55:20.032  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ Initializing Media Player
05-14 13:55:20.032  17515-17515/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ SurfaceView Changed
05-14 13:55:20.972  17515-17522/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Rejecting registerization due to +iget-quick v3, v5, (#20)
05-14 13:55:21.042  17515-17522/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Rejecting registerization due to +iget-quick v3, v5, (#20)
05-14 13:55:22.102  17515-17515/se.zxzzxzxz.videoplayer V/WebViewInputDispatcher﹕ blockWebkitDraw
05-14 13:55:22.102  17515-17515/se.zxzzxzxz.videoplayer V/WebViewInputDispatcher﹕ blockWebkitDraw lockedfalse
**THIS IS WHERE PLAYBACK ACTION IS REQUESTED FROM MEDIA PLAYER**
05-14 13:55:22.282  17515-17613/se.zxzzxzxz.videoplayer V/VideoPlayer﹕ Thread[pool-1-thread-1,5,main]
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer I/class com.zxz.playerapi.HLSPlayer﹕ zxzzxzMediaPlayer()
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxz_BasePlayer﹕ getMainLooper()1
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxz_BasePlayer﹕ zxz_BasePlayer Init -
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Trying to load lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libvodl.so 0x422034a0
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling hookDlopen()!
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling hookCheckABI2Header()!
05-14 13:55:22.292  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling houdiniHookInit()!
05-14 13:55:22.342  17515-17515/se.zxzzxzxz.videoplayer D/HTML5VideoViewProxy﹕ handleMessage - SEEK
05-14 13:55:22.352  17515-17613/se.zxzzxzxz.videoplayer D/houdini﹕ [17613] Loading library(version: 3.3.3.43422 RELEASE)... successfully.
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Added shared lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libvodl.so 0x422034a0
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/dalvikvm﹕ No JNI_OnLoad found in /data/app-lib/se.zxzzxzxz.videoplayer-1/libvodl.so 0x422034a0, skipping init
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Trying to load lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libzxz_Eng.so 0x422034a0
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling hookDlopen()!
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling hookCheckABI2Header()!
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling houdiniHookInit()!
05-14 13:55:22.362  17515-17522/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Rejecting registerization due to move v5, v4, (#0)
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Added shared lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libzxz_Eng.so 0x422034a0
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer D/﹕ calling hookJniOnload()!
05-14 13:55:22.362  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxz_StreamSDK.java﹕ getMainLooper()
05-14 13:55:22.372  17515-17522/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Rejecting registerization due to move v5, v4, (#0)
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/xzVideoRender.java﹕ Construct!
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer I/@@@xzAudioRender﹕xzAudioRender Construct
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer I/@@@zxz_StreamSDK.java﹕ init spend time is 35
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxzxzBasePlayer﹕ zxz_BasePlayer Init +, return is 0
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer I/@@@zxz_BasePlayer﹕ /data/app-lib/se.zxzzxzxz.videoplayer-1/libvoDRMJNI.so is not exiest.
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/class com.mot.playerapi.HLSPlayer﹕ MediaPlayer is created.
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer E/@@@zxz_BasePlayer﹕ to set parameter to HashMap! id = 3000013
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer E/@@zxz_BasePlayer﹕ to set parameter to HashMap! id = 3000014
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxz_BasePlayer﹕ setDisplay suface is android.view.SurfaceView21134db8 V.E..... ......ID 0,515-320,665
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/@@@zxz_StreamSDK.java﹕ setDisplay suface is android.view.SurfaceView$4@21135100
05-14 13:55:22.402  17515-17613/se.zxzzxzxz.videoplayer V/xzVideoRender.java﹕ setSurfaceHolder use RGBA8888!
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer E/@@@zxz_BasePlayer﹕ to set parameter to HashMap! id = 3000001
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer E/@@@zxz_BasePlayer﹕ to set parameter to HashMap! id = 3000002
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer E/@@@zxz_BasePlayer﹕ to set parameter to HashMap! id = 300000c
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer V/@@@zxz_BasePlayer﹕ Start ClosedCaption!
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer V/@@@zxz_BasePlayer﹕ zxz_BasePlayer Open -
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer V/@@@zxz_DataSource.java﹕ Befor loadLibrary, zxz_Source
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Trying to load lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libvodl.so 0x421fc410
05-14 14:09:58.282  18934-18975/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Shared lib '/data/app-lib/se.zxzzxzxz.videoplayer-1/libvodl.so' already loaded in same CL 0x421fc410
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Trying to load lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libzxz_Source.so 0x421fc410
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/﹕ calling hookDlopen()!
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/﹕ calling hookCheckABI2Header()!
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/﹕ calling houdiniHookInit()!
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Added shared lib /data/app-lib/se.zxzzxzxz.videoplayer-1/libzxz_Source.so 0x421fc410
05-14 14:09:58.292  18934-18941/se.zxzzxzxz.videoplayer D/dalvikvm﹕ Rejecting registerization due to and-int/lit8 v4, v6, (#15)
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer D/dalvikvm﹕ No JNI_OnLoad found in /data/app-lib/se.zxzzxzxz.videoplayer-1/libzxz_Source.so 0x421fc410, skipping init
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer V/@@@zxz_DataSource.java﹕ after loadLibrary, zxz_Source
05-14 14:09:58.292  18934-18975/se.zxzzxzxz.videoplayer I/@@@zxz_DataSource.java﹕ sourceType is 0, initParamFlag is 0
05-14 14:09:58.312  18934-18950/se.zxzzxzxz.videoplayer A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x79454b7c (code=2), thread 18950 (WebViewCoreThre)
05-14 14:09:58.312  18934-18975/se.zxzzxzxz.videoplayer A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x7ad640d4 (code=2), thread 18975 (pool-1-thread-1)
05-14 14:09:58.322  18934-18934/se.zxzzxzxz.videoplayer A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x7ad6efbc (code=2), thread 18934 (ive.videoplayer) 

输出中有很多警告和较小的错误。尽管播放成功与否,它们都不会停止执行并且存在。当收到各种致命信号11时,执行停止。不幸的是,这些并不是每次都一样。

可能的原因和解决方法

为了解决问题,我尝试了很多不同的东西,我会在这里写一些我的理论以供参考。

起初我以为是 WebCore 线程和主线程之间的线程/并发问题。我被引导到这条路是因为错误指出“android.view.ViewRoot$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸它的视图”,我花了一段时间才得到不同的调用和回调都在主线程上执行。我设法让它全部在主线程上运行,但问题仍然存在,因此消除了它只是 webcore 和 ui 线程之间的线程问题的可能性。 关闭并打开硬件加速,不起作用。 用不同的硬件试过了,没用。 在一个没有cordova的新项目中启动视频播放器,这可以完美运行,因此不是参数问题,因为此时使用了与播放器相同的参数。 启动视频播放器,以便在创建时使用设置的流开始播放,从而消除了来自 webcor 线程的调用。这很好用,但给我增加了困惑,因为我认为我消除了它是线程问题的可能性。 尝试了不同的流,没有效果。 我留下的想法是,它与预编译的第三方原生视频播放器库与低级别或项目构建中的 cordova 之间的互通有关。

问题

那么我的问题是:你们中的任何人有任何经验可以帮助解决这个问题吗?任何有关 3PP 原生视频和 Cordova 的内容都可能非常有帮助。

PS:这是我的第一个 *** 问题,对于破旧的格式感到抱歉。

【问题讨论】:

libc 是发出致命信号 11 的那个,所以对我来说 3PP 或 Cordova 似乎不是问题(虽然我没有使用它们的经验)你看过这个答案吗? ***.com/questions/20192193/… 我现在尝试了该解决方案,但不幸的是它不起作用。 3PP 库是本机(armeabi)库,所以我认为是使用 libc 中的函数的库最终崩溃了。对我来说,错误出现在 libc 中似乎有些牵强,但正如你所说,它肯定与它有关。谢谢你,继续更多的理论=) 【参考方案1】:

好的,我们现在已经了解了问题所在,现在我有时间我想我应该分享它。

从日志中可以看出 (05-14 14:09:58.292 18934-18975/se.zxzzxzxz.videoplayer D/: 调用 houdiniHookInit()!) houdini 已启动。现在你可能会问什么是 Houdini。

Houdini 帮助在 x86 内核上模拟 arm 行为,以便可以在设备上使用 arm 库(How does native android code written for ARM run on x86?)

因此,我们的问题的答案是我们使用的是 arm 编译库,但我们的设备具有 x86 内核。仿真中出现了问题,结果是段错误。我们已经切换了设备,现在一切正常。

感谢您查看这篇文章,希望对您有所帮助。

【讨论】:

以上是关于Cordova 和 3PP 原生媒体播放器库在 Android 中提供致命信号 11的主要内容,如果未能解决你的问题,请参考以下文章

cordova加载层进度条文件选择插件

WordPress - 媒体库在控制台中显示 503 错误

搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo

Ionic/Cordova - 是不是有具有工作轨迹栏功能的媒体/媒体播放器插件?

混合 cordova web 和原生 iOS 代码

如何显示来自 Cordova 媒体捕获的图像和播放音频