我已从this link的github下载了视频修剪代码。
它第一次完美运行,但是当我第二次尝试运行它时代码崩溃没有任何异常然后当我尝试在崩溃后第3次运行它时它再次运行! 有没有人对这种行为有任何想法?
我也正在开发一个应用程序,它有一个修剪视频模块。 我真的很感激,如果有人能帮助我的话。
答案 0 :(得分:4)
https://lists.ffmpeg.org/pipermail/libav-user/2012-May/001964.html
在'ffmpeg.c'中了解静态变量的问题......
我敢打赌,你有同样的问题,需要做一些事情(3个备选的选择)来重置或GC那些变量:
获取加载lib和GC的java类加载器
在c层执行OP在上面链接中所做的事情
编写第二个共享库,在每个调用周期中在第一个库中使用'dlsym'和'dlclose'
github,请参阅“自述文件”here
同样的问题
答案 1 :(得分:3)
只需在你的ffmpeg.c中创建一个类似于
的方法void exitmycode(){
ffmpeg_exit(0);
}
ffmpeg_exit(0)
方法已在ffmpeg.c
中,您只需在完成视频修剪后从主C文件中调用exitmycode();
。
现在发生的事情是,当您使用ffmpeg修剪视频或其他任何内容时,它不会完全退出,因此下次运行命令时它会退出,但它也不会运行修剪命令如果你第三次运行,命令就会完美执行。所以,我所做的就是在完成处理结束时手动调用ffmpeg_exit(0)
。
答案 2 :(得分:0)
答案 3 :(得分:-1)
做一件事
如果你已经安装了ffmpeg4android_os lib,那么你只需要评论1行方法 像这样的StopTranscoding
public void stopTranscoding() {
Log.d(Prefs.TAG, "stopTranscoding called");
if (_transcodeBackground != null) {
//_transcodeBackground.forceCancel();
}
}
全部......