错误1 libavcodec.so 文件格式未被识别 Android GL 实时壁纸

9
我正在尝试为Android制作一个动态壁纸,可以播放位于android-asset中的.mp4视频文件(使用我的示例时,实际上会在运行时将文件复制到SD卡中/无关紧要)。
我找到了这个示例, 并使用这个帖子,我成功地设置了NDK并构建了项目。 在Eclipse中使用NDK插件进行构建时,我的问题窗口出现了这个错误。
    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文件夹中,但没有帮助。
在eclipse中,如果没有使用NDK,该项目可以成功构建,但是当尝试运行壁纸时会发生错误,因为没有构建本地库。
我该如何解决这个错误?
2个回答

2

您可以通过 git clone https://github.com/frankandrobot/GLWallpaperVideoDemo.git 获取的软件包是针对Linux操作系统的。文件jni\ffmpeg-android\build\ffmpeg\armeabi\lib\libavcodec.so和其他许多文件只是实际文件的符号链接。

为了在Windows上轻松实现这一切,建议您转到jni\ffmpeg-android\build\ffmpeg\armeabi\lib文件夹,并运行以下命令:

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

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)

你实际上看到的是同样的错误信息,只是你以不同的方式进行了过滤。 - Alex Cohn
是的,我也有同样的错误信息,但你在问题中没有包含这个重要部分。 - C.d.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接