Android:FFmpeg 占用高内存/cpu 使用率导致崩溃

标签 android ffmpeg

我为 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/

相关文章:

java - Android 加速度计和磁力计同时读数

bash - ffmpeg:使用一个命令连接和编码

python - FFmpeg 输出到数组而不保存到文件

android - FFMpeg:将图像与音频合并特定持续时间

android - 无法为我的 ListView 更新数据

java - android java从XML调用按钮而不获取NULL

android - 如何将 Android Dream 服务作为 Activity (或在 Activity 中)运行?

android - 为什么 Volley 调用 https ://safebrowsing. google.com?

c# - 用于 H264 音频/视频流的 RTSP 客户端

windows - 如何在 RTMP 流中嵌入 pic_timing SEI 挂钟时间码?