在 Eclipse 中导入项目的一部分
Importing a part of a project in Eclipse
在 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);
}
总而言之,有没有办法导入项目的一部分(可能作为模块)?还是我必须找到另一种方法来减小我的视频大小?
Eclipse 可以选择将项目、文件、src、包导入现有项目或新项目。
您可以导入文件,右键单击 Proyect > Import > General > Archive File。
或者文件系统,如果是 src 或包。或许能帮到你。
您并没有真正导入项目 – 您使用的是一个名为 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 这样的独立视频编码器可能更小,但在 formats/codecs 它可以读取和写入的内容方面功能有限。
在 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);
}
总而言之,有没有办法导入项目的一部分(可能作为模块)?还是我必须找到另一种方法来减小我的视频大小?
Eclipse 可以选择将项目、文件、src、包导入现有项目或新项目。 您可以导入文件,右键单击 Proyect > Import > General > Archive File。 或者文件系统,如果是 src 或包。或许能帮到你。
您并没有真正导入项目 – 您使用的是一个名为 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 这样的独立视频编码器可能更小,但在 formats/codecs 它可以读取和写入的内容方面功能有限。