
내 응용 프로그램에서 사용자는 특정 위치(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"};
그것은 안드로이드 애플리케이션이므로 문자열 배열에 있습니다. 명령은 완벽하게 작동하지만 완료하는 데 시간이 오래 걸립니다.
내 로그에는 다음이 반복적으로 표시됩니다.
[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가 원하는 프레임에 도달할 때까지 각 프레임을 처리한 다음 처리한다는 것입니다.
내 질문:
비디오에서 이미지로 단일 프레임을 내보내는 속도/처리 시간을 높이는 방법이 있습니까? - 원치 않는 프레임을 건너뛰고 사용자가 내보내려는 프레임으로 직접 이동하면 될까요?
답변1
"-ss",GetPositionInVideo,
"-i",Video.mp4
빠른 탐색을 위해 바로 직전에 갑니다 .