在我的应用程序中,用户可以查找到特定位置(media.currentPosition),然后按保存按钮,然后将导出图像,这是我正在使用的ffmpeg命令来实现此目的:
"-i",Video.mp4,"-filter_complex","[1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v]","-map","[v]","-ss",GetPositionInVideo,"-vframes","1","-q:v","2", "-preset", "ultrafast",directoryToStore+"/"+"Image.jpg"};
这是一个android应用程序,因此它位于字符串数组中。该命令可以完美运行,但要花很长时间才能完成。
在我的日志中,它将重复显示以下内容:
[Progress]: frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
直到到达该帧为止,然后显示以下内容:
[Progress]: frame= 1 fps=0.0 q=2.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.00151x
然后立即完成。
因此,我认为正在发生的事情是,ffmpeg处理每个帧,直到到达所需的帧,然后对其进行处理。
我的问题:
有没有办法增加从视频到图像导出单帧的速度/处理时间? -也许通过跳过不需要的帧并直接转到用户要导出的帧?