android - Android 中多次调用 ffmpeg main 失败

标签 android ffmpeg program-entry-point

我已将 ffmpeg 库移植到 Android。使用 JNI 接口(interface),我可以通过向 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 将无法处理请求并引发段错误。

对于第一次调用,它给出这样的信息:

Guessed Channel Layout for Input Stream #0.0 : mono

并且有效。但对于第二个,消息如下:

Guessed Channel Layout for Input Stream #1.0 : mono

而且它不起作用。不知道和错误有没有关系。

一般来说,这个问题应该与静态全局变量有关(我认为),但我无法正确重置它们。多次成功调用 ffmpeg main 方法的解决方案可能是什么?

最佳答案

https://github.com/jhotovy/android-ffmpeg

从同一个 Activity 多次调用 ffmpeg 的 main() 会导致段错误。这仍然是 libffmpeg 的一个问题,但 libffmpeginvoke 至少应用了此处描述的创可贴解决方案:Calling native method twice of third party library in an Activity causes the Android application to close down .

关于android - Android 中多次调用 ffmpeg main 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665748/

相关文章:

ruby - main 与 Ruby 中的初始化

android - 如何修复 Google Play 控制台中的 “Issue:Test login Needed” 问题

java - 如何从 Google map android 中删除所有半径圆但保留钉子?

android - 使用 Widget.Sherlock.ActionButton 膨胀 ImageView 时资源不是 Drawable

ffmpeg - ffplay 搜索功能

ffmpeg - 编辑 m4s 文件视频

java - 从 main 隐式调用类中的方法

android - 如何在我自己的实用程序类中提供上下文来调用必要的函数

javascript - 中断ajax函数会阻止它完成吗?

c - 同一项目下不同源文件中的两个main()