2

我有一个视频文件,我正在尝试使用 -vf 参数来缩放它,用于 android 项目中使用的 ffmpeg “Angel” repo 版本。通过 NDK 构建的过程很顺利,但是当我编写此代码时,应用程序会启动并退出。如果我使用 -vf 以外的任何其他参数,它可以正常工作并导出视频。

JNIEXPORT jint JNICALL Java_com_schemaphic_mirrorapp_jni_NativeHelper_hFlipVideoEffect( JNIEnv *env, jstring outFile )
{
//ffplay -i INPUT -vf "crop=iw/2:ih:0:0,split[tmp],pad=2*iw[left]; [tmp]hflip[right]; [left][right] overlay=W/2"
//fmpeg -i input -vf scale=iw/2:-1 output
//ffmpeg -i input -vf yadif=0:0:0,scale=iw/2:-1  output

char** arguments;
int count = 6;

arguments = calloc( count, sizeof( char* ) );

arguments[0] = "ffmpeg";

arguments[1] = "-i";
arguments[2] = "/sdcard/mirrorapp/cropVideo.mp4";

arguments[3] = "-vf";
arguments[4] = "scale=120:-1";

//arguments[5] = "-aspect";
//arguments[6] = "3:2";
//arguments[5] = "-vcodec";
//arguments[6] = "mpeg4";
/*arguments[9] = "-r";
arguments[10] = "19";
arguments[5] = "-cropright";
arguments[6] = "240";
arguments[7] = "-padleft";
arguments[8] = "0";
arguments[9] = "-padtop";
arguments[10] = "0";
arguments[11] = "-aspect";
arguments[12] = "3:2";
arguments[13] = "-an";
arguments[5] = "-vcodec";
arguments[6] = "mpeg4";*/
//arguments[7] = "-sameq";
arguments[5] = "/sdcard/mirrorapp/cropFlipVideo.mp4";

ffmpeg_main( count, arguments );
//free(arguments);

return 1;
}

这给我的印象是设置是正确的。参数 -vf 不知何故不起作用或不确定较新的语法。请帮忙。

4

1 回答 1

1

我想我有你的答案:

arguments[3] = "-vf";
arguments[4] = "\"scale=120:-1\"";

我相信ffmpeg希望过滤器参数在双引号内。

于 2012-10-02T15:50:17.970 回答