비디오 파일을 이미지 시퀀스로 변환하는 방법 (예 : N 초마다 한 프레임) mplayer 또는 ffmpeg가이를 수행 할 수 있습니까? MPlayer를 사용하여 스크린 샷을 수동으로 가져 왔지만 긴 비디오를 위해 이것을 자동화하고 싶습니다.
답변
ffmpeg를 사용하면 매우 간단하며 추가 스크립트 없이 N 초마다 한 프레임을 출력 할 수 있습니다 . 이미지 시퀀스로 내보내려면 출력과 비슷하거나 비슷하게 사용 하십시오. 비트는 제로 패딩 정수로 변환됩니다 오랫동안 자리 – 내가 준 예는 다음과 같이 출력을 얻는다myimage_%04d.png
%0xd
x
myimage_0000.png
,myimage_0001.png
,-
myimage_0002.png
기타..
많은 스틸 이미지 형식, png, jpeg, tga 등 무엇이든 사용할 수 있습니다 ( ffmpeg -formats
전체 목록 참조 ).
이제 동영상을 이미지 시퀀스로 내보내는 방법을 알고 있지만 모든 단일 프레임을 내보내고 싶지 않다고 가정하십니까?
트릭은 초당 프레임 수인 -r n
옵션을 사용하여 출력의 프레임 속도를 원하는대로 간단히 변경하는 것 n
입니다. 초당 1 프레임 -r 1
, 4 초 -r 0.25
마다 1 프레임, 10 초마다 1 프레임 -r 0.1
등이됩니다.
그래서 그것의 하나의 프레임 저장하려면 어떻게 보일지이다, 모두 함께 넣어 input.mov
마다 4 초 output_0000.png
, output_0001.png
등 :
ffmpeg -i input.mov -r 0.25 output_%04d.png
점을 유의 -r 0.25
옵션이 간다 후-i input.mov
가의 프레임 속도 제어 있기 때문에, 일부 출력을 . 당신이 그것을 넣으면 전에 입력이 지정된 프레임 속도를 한 것처럼 입력 파일을 치료하는 것입니다.
10,000 개 이상의 프레임을 만들 것입니다 명령이이 변경 될 경우 당신이 필요하지만 많은 숫자, 예에 %의 XD 변경 %04d
에 %05d
. 이미지 시퀀스 인 입력 파일에도 적용됩니다. 자세한 내용은 여기를 참조 하십시오 .
Windows 사용자 : 명령 행 사용%
예: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
CMD 및 BAT 스크립트에서 %%
예: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
따라서 %%
스크립트는 두 배이고 %
대화식 명령 줄은 하나 입니다. 어느 상황에서든 잘못하면 오류가 발생합니다.
답변
mplayer -vo jpeg -sstep 5 file.avi
프레임을 5 초마다 jpeg 파일로 저장합니다.
그러나 파일의 끝에서 멈추지 않고 마지막 프레임의 사본을 계속 생성합니다. 이를 피하려면 다른 플레이어 또는 mplayer를 사용하여 비디오의 지속 시간을 초 단위로 찾으십시오.
mplayer -vo null -ao null -frames 0 -identify file.avi
“ID_LENGTH = 147.00″과 같은 줄을 찾으십시오.
길이에서 2를 빼고 -endpos
옵션 에이 값을 사용하십시오 . 예를 들어 147 초 동영상의 경우 :
mplayer -vo jpeg -sstep 5 -endpos 145 file.avi
답변
을 사용 ffmpeg
하면 다음을 수행 할 수 있습니다.
ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg
이 명령은 비디오에서 4 초에 320 × 240 크기의 JPG 썸네일을 생성합니다. 시간과 파일 이름을 변경하는 스크립트에 이것을 입력하면 완료됩니다.
추가 정보 : 동영상의 X 초마다 썸네일 이미지 만들기
답변
일종의 밀착 인화를 수행 하고 Unix와 유사한 OS를 사용하는 경우 Video Contact Sheet * NIX , short vcs 라고하는이 정교한 스크립트를 사용할 수 있습니다 .
백그라운드에서는 ffmpeg
기본적으로 mplayer
또는를 사용하므로 많은 비디오 형식을 처리 할 수 있습니다. 동영상에서 스틸 이미지를 캡처하는 프로세스를 자동화하고 머리글과 바닥 글이있는 이미지로 구성합니다. 예를 들어 원하는 캡처 수 또는 시간 차이를 선택할 수 있습니다.
10 분 간격으로 호출은 다음과 같습니다.
vcs -i 10m input.avi
다른 조정에 대한 전체 명령 줄 옵션 목록을 확인하십시오 .
다음은 홈페이지에서 가져온 예제 밀착 인화입니다 .
답변
VLC 1.1.0 이상에서는 장면 비디오 필터를 사용할 수 있습니다.
vlc C:\video\to\process.mp4 --rate=1 --video-filter=scene --vout=dummy --start-time=10 --stop-time=11 --scene-format=png --scene-ratio=24 --scene-prefix=snap --scene-path=C:\path\for\snapshots\ vlc://quit
위의 내용은 00:00:10에서 시작하여 00:00:11에서 끝나는 24 개 프레임 중 1 개를 저장합니다 (-장면 비율 = 24).
방금 테스트하여 새로 설치 한 Windows 8에서 VLC 2.0.3에서 작동하는지 확인했습니다 (추가 비디오 플러그인 또는 소프트웨어가 없음).
답변
답변
당신은 또한 이것을 시도 할 수 있습니다
VLC 명령 줄에서 …
vlc “C : \ YOUR \ file \ path \ file.avi”-V 이미지 –image-out-prefix = capname –image-out-ratio = 60
file.avi는 캡처 할 비디오이고, capname은 저장된 이미지의 접두사입니다. 비율로 재생하고 싶을 수도 있습니다 (60은 60 개 이미지 중 1 개가 캡처됨을 의미합니다). 예를 들어 더 많은 명령을 추가 할 수 있습니다. –image-out-format jpeg는 캡을 png 대신 jpeg로 저장합니다. –snapshot-path를 사용하면 캡을 저장할 위치를 선택할 수 있습니다.