我已将 ffmpeg 库移植到 Android。使用 JNI 接口,我可以通过向 ffmpeg 的 main 方法提供参数来运行 ffmpeg 命令,就像从命令行一样。
为了获取视频的特定部分,我使用以下命令:
ffmpeg -i /mnt/sdcard/input_video.mp4 -ss 00:00:12 -t 00:00:10 -an /mnt/sdcard/output_video.mp4
而且效果很好。视频从 12. 秒分割到 22. 秒并保存视频,方法正常返回(为 0)。
但是,如果我在第一个调用完成后进行第二次类似的调用(例如不同的开始时间),ffmpeg 将无法处理请求并引发分段错误。
对于第一个电话,它提供了这样的信息:
输入流#0.0 的猜测通道布局:单声道
和作品。但是对于第二个,消息是这样的:
输入流#1.0 的猜测通道布局:单声道
它不起作用。我不知道它是否与错误有关。
一般来说,这个问题应该与静态全局变量有关(我认为),但我无法正确重置它们。对ffmpeg的主要方法进行多次成功调用的解决方案可能是什么?