我为 android 编译了 ffmpeg,启用了 mediacodec 和 jni。它可以工作,但是当我合并高清视频 60fps 时,它会使应用程序崩溃。我正在使用这个 ffmpeg cmd。
[-y, -benchmark, -ss, 0.0, -t, 11.541, -i, VID_HD.mp4, -filter_complex, [0:v]setpts=PTS-STARTPTS,scale=1080.0:1920.0:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=#000000, -c:v, libx264, -c:a, aac, -ac, 2, -ar, 44100, -preset, ultrafast, -strict, -2, VID_HD.ts]
有时我会为相同的 cmds 收到这些错误,但是当我重新运行时,它会起作用,有时如果我重新运行 3-4 次,它会重新启动应用程序。可能是因为内存没有清理。在这里帮帮我。
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
VideoKit:Error: Failed to inject frame into filter network: Out of memory
VideoKit:Error: Error while processing the decoded data for stream #0:0
我在执行完成时也需要清理 FFmpeg 的帮助,我调用我的 run(FFmpeg cmds) 方法进行下一个视频编码,它重新启动应用程序,我怀疑是因为内存使用。
最佳答案
查看我的代码后,我发现我没有调用 exit_program()
在运行方法结束时 ffmpeg_main_entry()
正在调用 exit_program()
,并且这个方法注册了ffmpeg_clenup()
引用 program_exit
.写完那一行代码后exit_program()
,它有效,但仍在测试中。
关于Android:FFmpeg 占用高内存/cpu 使用率导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413174/