9

我正在尝试为android制作一个动态壁纸,播放位于android-asset设备上的.mp4视频(在我使用的示例中,它实际上在运行时将文件复制到sdcard/没关系)

我找到了这个例子 并使用这篇文章,我能够使用 NDK 设置我的 Eclipse 并构建项目。使用 NDK 插件在 Eclipse 中构建时,我在问题窗口中收到此错误:

    Description Resource    Path    Location    Type
make: *** [libs/armeabi/libavcodec.so] Error 1  GLWallpaperVideoDemo-master         C/C++ Problem
make: *** Deleting file `libs/armeabi/libavcodec.so'    GLWallpaperVideoDemo-master         C/C++ Problem

如果我尝试ndk-build从命令提示符运行,我会得到同样的错误。

我从上面的链接下载了项目,然后导入到 eclipse 中。我将 lib GLWallpaperService 添加到构建路径中,并确保我的 NDK 已设置。知道 lib 文件夹更改为 libs 我还尝试将 GLWallpaperService 移动到 libs 文件夹,但没有帮助。

该项目在没有 NDK 的情况下在 Eclipse 中构建得很好,但在尝试运行壁纸时显然会出错,因为没有构建本机库。

如何解决此错误?

4

2 回答 2

2

The package you get by git clone https://github.com/frankandrobot/GLWallpaperVideoDemo.git is Linux oriented. The file jni\ffmpeg-android\build\ffmpeg\armeabi\lib\libavcodec.so and many others are simply symbolic links to actual files.

To make this all work easily on Windows, I suggest to go to the jni\ffmpeg-android\build\ffmpeg\armeabi\lib folder, and run

del *.so
copy libavcodec.so.52.99.1 libavcodec.so
copy libavcore.so.0.16.0 libavcore.so
copy libavdevice.so.52.2.2 libavdevice.so
copy libavfilter.so.1.69.0 libavfilter.so
copy libavformat.so.52.88.0 libavformat.so
copy libavutil.so.50.34.0 libavutil.so
copy libswscale.so.0.12.0 libswscale.so
于 2013-07-17T13:10:43.550 回答
1

问题可能是由于so文件损坏。尝试再次构建 ffmpeg 库或找到另一个版本。因为当我尝试编译项目时,我在eclipse中遇到了不同的错误:

C:/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-strip:./libs/armeabi/libavcodec.so:文件格式无法识别

当我搜索此错误时,似乎该错误是由于文件损坏:NDK prebuilt shared library file format not Recognized

或者库不是Android可以使用的格式: Error in linking C++ static library with android ndk(Error: file format not Recognized)

于 2013-07-16T08:35:32.613 回答