关于ffmpeg在android上用命令行方式使用,添加ffmpeg.c等文件后编译报错cmdutils.h:209:40: error: expected ‘)’
这是一个很蠢的地方:
一句话:
class是关键字不能作为参数名
展开来看
:
/**
* Show help for all options with given flags in class and all its
* children.
*/
void show_help_children(const AVClass *class, int flags);
这是源代码,其中class是参数名,在androidStudio上显示的时候其实是加粗了的,识别成了关键字clas。而原本ffmpeg是纯C代码,class不会被识别成关键字,所以他源代码这样写没问题,但是咱们这里不一样了,于是就被错误的识别成了class关键字,语法自然被打乱。
解决方法:只需要将这里和cmdutil.c里面的这个函数的参数名修改一下就ok了,我修改成了avvclass。
后果:我第一次用ffmpeg -h来作为测试的方法,结果这个show_help_children可能就是跟-h有关的函数,我把他给注释掉了,自然测试不成,排查半天,最后用了别人的so库,这下可能要看看自己的是不是改了这里也行了。
另外这里面在585行也有一个错误我正在找解决方法。
解决方法:
修改ffmpeg.h ffmpeg.c cmdutils.h cmdutils.c文件
在ffmpeg.c中找到main函数(在文件最后),将名称改为run,并在头文件中声明该函数。
在cmdutils.h文件中找到"0x%"PRIx64所在的行,在PR前加入一个空格,不然编译会报错。
这个空格来自
原文链接:https://blog.csdn.net/wuppa/article/details/91879902
想不到竟然被这么白痴的问题难住了,看来当初应该仔细点,他们注释了一大堆方法跟我这里的不一样啊