我为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)方法,它会重新启动应用程序,我怀疑是因为占用了内存。
答案 0 :(得分:0)
查看代码后,我发现我没有在运行方法exit_program()
的末尾调用ffmpeg_main_entry()
,而运行方法exit_program()
却未通过调用ffmpeg_clenup()
进行注册program_exit
。编写了一个行代码exit_program()
后,它可以工作,但仍在测试。