在 Eclipse 中导入项目的一部分
Posted
技术标签:
【中文标题】在 Eclipse 中导入项目的一部分【英文标题】:Importing a part of a project in Eclipse 【发布时间】:2015-04-27 23:17:12 【问题描述】:在 Eclipse 上,我将 FFmpeg 作为项目导入,以减少我的 android 应用程序的选定视频大小。但是我的 .apk 大小从 2MB 增加到了 24MB。
此项目包含许多用于视频编辑的额外属性。但是我只使用一个命令行来降低我的视频分辨率。我添加的代码:
LoadJNI vk = new LoadJNI();
try
String workFolder = getApplicationContext()
.getFilesDir().getAbsolutePath();
String[] complexCommand =
"ffmpeg",
"-y",
"-i",
"/storage/emulated/0/DCIM/Camera/20150224_125355.mp4",
"-strict", "experimental", "-s", "160x120",
"-r", "25", "-vcodec", "mpeg4", "-b", "150k",
"-ab", "48000", "-ac", "2", "-ar", "22050",
"/storage/emulated/0/TempFolder/out.mp4" ;
vk.run(complexCommand, workFolder,
getApplicationContext());
Log.i("test", "ffmpeg4android finished successfully");
catch (Throwable e)
Log.e("test", "vk run exception.", e);
总而言之,有没有办法导入项目的一部分(可能是一个模块)?还是我必须找到另一种方法来减小视频大小?
【问题讨论】:
"有没有办法导入项目的一部分(可能是一个模块)?" -- 这对项目的作者来说是个好问题。 【参考方案1】:您并没有真正导入项目 - 您使用的是名为 ffmpeg
的二进制文件,它是一个可执行文件,其中包含静态编译到一个包中的所有第三方库。你不能使这个文件更小。您只能在启用较少库的情况下编译它。
您的 ffmpeg 二进制文件在不带任何参数运行时会显示编译前设置的各种 --enable
选项。例如,我的 ffmpeg 几乎包含所有内容:
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfontconfig --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libass --enable-ffplay --enable-libspeex --enable-libschroedinger --enable-libfdk-aac --enable-openssl --enable-libopus --enable-frei0r --enable-libcaca --enable-libsoxr --enable-libquvi --enable-libvidstab --enable-libx265 --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1_1/include/openjpeg-1.5 ' --enable-nonfree --enable-vda
例如,如果您有--enable-libfaac
,则您的 ffmpeg 包含一个 FAAC 音频编码器,这不是绝对必要的,并且会增加二进制文件的大小。您正在使用从github.com/faywong/ffmpeg4android 编译的任何二进制文件 - 因此您需要更改 ffmpeg4android 构建 ffmpeg 二进制文件的方式以包含更少。
如果您计划使用 AAC 音频对 H.264 视频进行编码,那么实际有用的 ffmpeg 的绝对最低版本将仅包括 libx264
。为此,您必须使用--enable-libx264
配置ffmpeg。但在你的问题中,你的命令有mpeg4
作为编解码器,这是一个内置在ffmpeg 中的MPEG-4 视觉编码器,所以理论上你可以坚持使用它。请记住,MPEG-4 Visual 不如 H.264 高效,并且会以相同的质量生成更大的文件,或者在相同的比特率下生成更低的质量。
但这取决于您的构建方式。如果除了 libx264 之外你真的没有启用任何东西并且你的构建很大,那么如果你想保留 ffmpeg,你就无能为力了。像 x264 这样的独立视频编码器可能更小,但在它可以读取和写入的格式/编解码器方面功能有限。
【讨论】:
【参考方案2】:Eclipse 可以选择将项目、文件、src、包导入现有项目或新项目。 您可以导入文件,右键单击 Proyect > Import > General > Archive File。 或文件系统,如果是 src 或包。也许这可以帮助你。
【讨论】:
以上是关于在 Eclipse 中导入项目的一部分的主要内容,如果未能解决你的问题,请参考以下文章
IDEA中导入eclipse项目会受到.classpath和.project的影响