在安卓中调用   recorder = new FFmpegFrameRecorder(saveFileName, cameraWidth, cameraHeight, 1);
时报错                                                    Caused by: java.lang.ClassNotFoundException: Didn't find class "org.bytedeco.javacpp.avutil" on path: DexPathList[[zip file "/data/app/com.amegia0.smarthome0-1.apk", zip file "/data/data/com.amegia0.smarthome0/code_cache/secondary-dexes/com.amegia0.smarthome0-1.apk.classes2.zip"],nativeLibraryDirectories=[/data/app-lib/com.amegia0.smarthome0-1, /vendor/lib, /system/lib]]
                                                       at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                       at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                       at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                       at java.lang.Class.classForName(Native Method) 
                                                       at java.lang.Class.forName(Class.java:251) 
                                                       at org.bytedeco.javacpp.Loader.load(Loader.java:473) 
                                                       at org.bytedeco.javacpp.Loader.load(Loader.java:418) 
                                                       at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1559) 
                                                       at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149) 
                                                       at com.amegia.smarthome.activity.LiveActivity$VideoRecordRunnable.run(LiveActivity.java:1511) 
                                                       at java.lang.Thread.run(Thread.java:841) 
但是只有在一台4.4版本和5.1版本的机器上有这个问题,其他的机器都没问题,这是为什么

解决方案 »

  1.   

    是不是手机的CPU架构不一样,没有对应的.so文件加载
      

  2.   

    path的获取方式不行,或者该型号手机不支持这种方式创建文件
     /**
         * 创建File对象,用于存储照片
         */    public File saveFile(String filename) {
            String storageState = Environment.getExternalStorageState();// 获取sd卡的状态
            if (Environment.MEDIA_MOUNTED.equals(storageState)) {// 如果已挂载状态
                //存储在SD卡文件夹image下
                dir = new File(Environment.getExternalStorageDirectory().getPath() + "/fsh_image");
                if (!dir.exists()) {
                    dir.mkdirs();
                }            file = new File(Environment.getExternalStorageDirectory().getPath() + "/fsh_image/" + filename + ".jpg");
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } else {
                //存储在本地文件夹image下
                dir = new File("/fsh_image");
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                file = new File("/fsh_image/" + filename + ".jpg");
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return file;
        }