0

我为 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) 方法进行下一个视频编码,它重新启动应用程序,我怀疑是因为内存使用。

4

1 回答 1

0

查看我的代码后,我发现我没有在调用exit_program()的 run 方法结束时ffmpeg_main_entry()调用exit_program(),并且该方法ffmpeg_clenup()通过引用注册program_exit。写完那一行代码后exit_program(),它可以工作,但仍在测试中。

于 2019-01-29T04:29:25.870 回答