在编译支持ffmpeg命令行的静态库时遇到了很多坑,总结修改如下:
1. 修改ffmpeg.c的main函数,因为一个程序不能有俩个main函数,我们可以改成ffmpeg_main,
2.cmdutils.c文件修改exit_program(int)函数,这个函数是清理资源用的,但是在里面调用了退出进程的函数exit,导致每次执行ffmpeg命令程序都会闪退。
将exit函数注释掉。
void exit_program(int ret)
{
if (program_exit)
program_exit(ret);
//标记为转换完成
stopRuning();
//这个是结束进程的方法,让ffmpeg进行完转码以后不至于退出程序
// exit(ret);
// 所以将退出进程的方法改造为退出线程
pthread_exit(NULL);
}
3. 将ffmpeg_main中的exit_program改为退出线程函数,return exit_program(1);改完以后会发现并没有退出线程,所以还需要将exit_program(int ret)
av_noreturn中的av_noreturn去掉,这个是给编译器的注解。
4.在ffmpeg_clean函数中会爆野指针错误,我们需要把指针计数器清零。(ffmpeg_main第二次执行闪退崩溃野指针)
5.和成视频的同名错误,即在执行完assert_file_overwrite函数之后会卡住报错already exist,所以我们要在
函数开始时先将以前的删除。
demo地址:https://github.com/zhouxiangyu666666/ZXYFFmpeg/tree/master
---------------------
作者:伴得白马啸西风
来源:CSDN
原文:https://blog.csdn.net/zhouxiangyu666666/article/details/78866245
版权声明:本文为博主原创文章,转载请附上博文链接!