由于开发者控制台中的安全问题,我将谷歌请求的Vitamio 4.2.2更新为5.0.0。但是使用相同的代码,它会像下面那样崩溃:
java.lang.UnsatisfiedLinkError: dlopen failed: library "nulllibstlport_shared.so" not found
at java.lang.Runtime.load(Runtime.java:332)
at java.lang.System.load(System.java:981)
at io.vov.vitamio.MediaPlayer.<clinit>(MediaPlayer.java:257)
at io.vov.vitamio.widget.VideoView.openVideo(VideoView.java:431)
at io.vov.vitamio.widget.VideoView.setVideoURI(VideoView.java:403)
at io.vov.vitamio.widget.VideoView.setVideoURI(VideoView.java:396)
at io.vov.vitamio.widget.VideoView.setVideoPath(VideoView.java:392)
at com.mypackage.myapp.LiveStreamActivity$LiveStreamParse.onPostExecute(LiveStreamActivity.java:131)
当我拨打videoView.setVideoPath(liveStreamUrl);
时发生崩溃:
VideoView videoView = (VideoView) findViewById(R.id.vvSurface);
videoView.setVideoPath(liveStreamUrl);
final MediaController mediaController = new MediaController(LiveStreamActivity.this);
videoView.setMediaController(mediaController);
videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH, 0);
videoView.requestFocus();
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
当我查看Vitamio 5.0.0的样本时,VideoView
没有任何变化。所以看起来Vitamio完全毁了自己。即使他们在2015-11-02发布了这个版本,他们仍然将SDK版本定位到API 19.这真是太遗憾了。
除了期待Vitamio团队的适当答案之外,我们还会对这个不幸的问题提出任何建议。
答案 0 :(得分:1)
因为您的应用似乎无法找到&#34; nulllibstlport_shared.so&#34;本土图书馆。当涉及本地时,指定发生问题的特定设备非常有用。
然而,在Vitamio网站上,他们说lib目前正在支持:ARMv6,VFP,ARMv7,NEON,MIPS,X86等...... 所以我建议你尝试强制你的应用程序包含仅支持ABI的本机库。
为此,您需要将其添加到 app / build.gradle
defaultConfig {
...
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
并在项目的根文件夹中找到 gradle.properties 文件并添加&#39; android.useDeprecatedNdk = true&#39;
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
...
# org.gradle.parallel=true
android.useDeprecatedNdk=true
但我真的不知道这是否会有所帮助。
答案 1 :(得分:1)
Vitamio 5.0中没有LibsCheck类。 它需要在onCreate函数中运行。
似乎Vitamio 5.0没有被压缩。它不使用ffmpeg库而且无法播放。
答案 2 :(得分:1)
迟到的回复,
但这可行(至少在我遇到同样的错误时为我工作)
Vitamio.isInitialized(this);
或者
Vitamio.isInitialized(getApplicationContext());
on onCreate of your activity。
答案 3 :(得分:0)
具体解决这个问题,我所做的是修改位于 src / io / vov / vitamio / 中的文件 MediaPlayer.java 。 第253行说:
String LIB_ROOT = Vitamio.getLibraryPath();
你应该改为:
String LIB_ROOT = "/data/data/your.package.name/lib/";
无论如何,如果你不确定,你可以调试应用程序,只停在该行,变量LIB_ROOT将具有完整的路径。
现在我还有另一个问题就是在这个库中工作。但我希望这有帮助。