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

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

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

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



답변

다음 -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]형식 일 수 있습니다 .


답변

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]또는 초 숫자로한다. 백분율이 필요하면 미리 비디오 길이를 계산해야합니다.


답변