주어진 시간에 ffmpeg가있는 비디오의 스크린 샷 1 개를 추출하는 방법은 무엇입니까?


109

ffmpeg를 사용하여 비디오에서 여러 스크린 샷을 추출하는 방법을 보여주는 많은 자습서와 자료가 있습니다. -r을 설정하고 특정 금액을 시작할 수도 있습니다.

하지만 1 개의 스크린 샷 (예 : 01:23:45 인치) 또는 1 개의 스크린 샷 (86 % 인치)을 원합니다.

이것은 ffmpegthumbnailer 로 모두 가능 하지만 의존하고 싶지 않은 또 다른 종속성입니다. ffmpeg로 할 수 있기를 원합니다.

답변:


208

다음 -ss옵션을 사용하십시오 .

ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg
  • JPEG 출력의 경우 -q:v출력 품질을 제어 하는 데 사용 합니다. 전체 범위는 1-31의 선형 눈금이며 값이 낮을수록 품질이 높아집니다. 2-5는 시도하기에 좋은 범위입니다.

  • 선택 필터 등의 선택은 특정 프레임 유형, 또는 100 개의 1과 같은보다 복잡한 요구하는 다른 방법을 제공한다

  • -ss입력 전에 배치 하는 것이 더 빠릅니다. FFmpeg Wiki : Seekingffmpegcli 도구 설명서 에서 발췌 한 내용을 참조하십시오 .

-ss 위치 (입력 / 출력)

입력 옵션 (이전 -i) 으로 사용되는 경우이 입력 파일에서 위치를 찾습니다. 대부분의 형식에서는 정확하게 검색 할 수 없으므로 ffmpeg위치 이전에 가장 가까운 검색 지점을 찾습니다. 트랜스 코딩 -accurate_seek이 활성화 되고 활성화 되면 (기본값) 탐색 지점과 위치 사이의이 추가 세그먼트가 디코딩되고 폐기됩니다. 스트림 복사를하거나 사용시 -noaccurate_seek보존됩니다.

출력 옵션으로 사용되는 경우 (출력 파일 이름 앞), 디코딩하지만 타임 스탬프가 위치에 도달 할 때까지 입력을 버립니다.

위치는 초 또는 hh:mm:ss[.xxx]형식 일 수 있습니다 .


2
이것은 훨씬 더 빠릅니다. 정말 고맙습니다. -ss를 먼저 넣으면 큰 차이가 있습니다.
Peter Bengtsson

지정된 시간 후에 n 번째 프레임을 얻을 수있는 방법이 있습니까?
dorien

@GuntherPiez 나는 가능한 인공물에 대한 언급을 어디에도 보지 못했습니다.
Stefan Reich

2
vframes(적어도) 버전 4.2.2에서 사용되지 않습니다. 수동으로 "[ vframes]는 ' -frames:v'에 대한 쓸모없는 별칭 이므로 대신 사용해야합니다."
Synexis

완벽하고 빠르게 작동합니다.
Smeterlink

37

FFMpeg는 주어진 타임 스탬프를 찾고 정확히 하나의 프레임을 이미지로 추출하여이를 수행 할 수 있습니다. 예를 들면 다음을 참조하십시오.

ffmpeg -i input_file.mp4 -ss 01:23:45 -vframes 1 output.jpg

옵션에 대해 설명하겠습니다.

-i input file           the path to the input file
-ss 01:23:45            seek the position to the specified timestamp
-vframes 1              only handle one video frame
output.jpg              output filename, should have a well-known extension

-ss매개 변수 형태로 받아 값 HH:MM:SS[.xxx]또는 초 숫자로한다. 백분율이 필요하면 미리 비디오 길이를 계산해야합니다.


예상대로 작동하는 것 같습니다. 나는 이것이 ffmpegthumbnailer를 사용하는 것과 같은 속도인지 현재 벤치마킹하고 있습니다.
Peter Bengtsson


7
파이프 라인의 디코딩 부분을 건너 뛰므로 -i 전에 -ss 옵션을 사용해보십시오. 이것은 프로세스의 속도를 높일 수 있습니다.
SirDarius

1
파일 대신 스트림에 PNG로 출력하는 방법이 있습니까?
Nicke Manarin 19.11.12

1
@NickeManarin 예 ... ffmpeg -ss 01:23:45 -i video.mp4 -c:v png -frames:v 1 image.jpg. 나는 또한 넣어 공지 사항 -ss"추구"옵션을 하기 전에 다른 사람이 추천 한대로, 명령 줄에서 입력 파일.
Glenn Slayden 19
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.