【问题标题】:Vitamio FileNotFoundExceptionVitamio FileNotFoundException
【发布时间】:2014-03-11 09:17:09
【问题描述】:

我正在尝试使用 vitamio 播放流 hls。当我播放流时它包含错误

03-11 16:12:25.836: E/Vitamio[Player](344): isNativeLibsInited
03-11 16:12:25.836: E/Vitamio[Player](344): java.io.FileNotFoundException: /data/data/com.example.esporttv/libs/.lock (No such file or directory)
03-11 16:12:25.836: E/Vitamio[Player](344):     at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
03-11 16:12:25.836: E/Vitamio[Player](344):     at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
03-11 16:12:25.836: E/Vitamio[Player](344):     at java.io.FileInputStream.<init>(FileInputStream.java:80)
03-11 16:12:25.836: E/Vitamio[Player](344):     at java.io.FileReader.<init>(FileReader.java:42)
03-11 16:12:25.836: E/Vitamio[Player](344):     at io.vov.vitamio.Vitamio.isInitialized(Vitamio.java:128)
03-11 16:12:25.836: E/Vitamio[Player](344):     at io.vov.vitamio.LibsChecker.checkVitamioLibs(LibsChecker.java:40)
03-11 16:12:25.836: E/Vitamio[Player](344):     at com.example.esporttv.Player$2.onClick(Player.java:97)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.view.View.performClick(View.java:2485)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.view.View$PerformClick.run(View.java:9080)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.os.Handler.handleCallback(Handler.java:587)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.os.Looper.loop(Looper.java:123)
03-11 16:12:25.836: E/Vitamio[Player](344):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-11 16:12:25.836: E/Vitamio[Player](344):     at java.lang.reflect.Method.invokeNative(Native Method)
03-11 16:12:25.836: E/Vitamio[Player](344):     at java.lang.reflect.Method.invoke(Method.java:507)
03-11 16:12:25.836: E/Vitamio[Player](344):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-11 16:12:25.836: E/Vitamio[Player](344):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-11 16:12:25.836: E/Vitamio[Player](344):     at dalvik.system.NativeStart.main(Native Method)
03-11 16:12:26.166: E/Vitamio[Player](344): isNativeLibsInited
03-11 16:12:26.166: E/Vitamio[Player](344): java.io.FileNotFoundException: /data/data/com.example.esporttv/libs/.lock (No such file or directory)
03-11 16:12:26.166: E/Vitamio[Player](344):     at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
03-11 16:12:26.166: E/Vitamio[Player](344):     at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.io.FileInputStream.<init>(FileInputStream.java:80)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.io.FileReader.<init>(FileReader.java:42)
03-11 16:12:26.166: E/Vitamio[Player](344):     at io.vov.vitamio.Vitamio.isInitialized(Vitamio.java:128)
03-11 16:12:26.166: E/Vitamio[Player](344):     at io.vov.vitamio.Vitamio.initialize(Vitamio.java:102)
03-11 16:12:26.166: E/Vitamio[Player](344):     at io.vov.vitamio.activity.InitActivity$1.doInBackground(InitActivity.java:55)
03-11 16:12:26.166: E/Vitamio[Player](344):     at io.vov.vitamio.activity.InitActivity$1.doInBackground(InitActivity.java:1)
03-11 16:12:26.166: E/Vitamio[Player](344):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
03-11 16:12:26.166: E/Vitamio[Player](344):     at java.lang.Thread.run(Thread.java:1019)

请帮助我。谢谢

【问题讨论】:

    标签: android vitamio


    【解决方案1】:

    你正在提供文件

    /data/data/com.example.esporttv/libs/.lock
    

    作为流媒体源。您应该始终使用 file.exists() 函数检查文件是否存在。

    您能否也发布初始化播放器的行?

    【讨论】:

    • 我在按钮 onclick 中暗示:if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(Player.this)) return; mVideoView = new VideoView(Player.this); mVideoView.setVideoPath(video.getLiveUrl()+"/hls"); mVideoView.setMediaController(new MediaController(Player.this)); mVideoView.requestFocus(); mVideoView.start(); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { // 可选需要 Vitamio 4.0 mediaPlayer.setPlaybackSpeed(1.0f); } });
    • 据我了解,问题根本不在于 videoPath 或视频。它与 checkVitamioLibs() 函数一起使用。如此处所述:github.com/yixia/VitamioBundle/wiki/Getting-Started,您应该在 onCreate 方法中调用此方法。不在 onClick() 函数中。
    【解决方案2】:

    如果你使用的是Android Studio,这里是解决方案,原文章here

    • 创建一个名为“lib”的文件夹(必须是这个名称)
    • 在 lib 中创建具有所需架构名称的子文件夹,例如 “armeabi-v7a”“armeabi”
    • 将所有 *.so 文件放入刚刚创建的文件夹中。现在你的文件夹结构应该是这样的:

      lib\armeabi-v7a

      ...

      库\armeabi

    • 将 lib 文件夹压缩成一个文件,例如abc.zip;
    • 重命名此 abc.zip –> abc.jar
    • 将此 abc.jar 复制到您的项目子文件夹中,任何地方都应该这样做,但是 我通常会把它放在 app\libs\abc.jar
    • 在 build.gradle 中,添加以下行。

    就是这样!

    dependencies {
        compile files(‘libs/abc.jar’)
         …
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多