[unix] 비디오 파일에서 이미지를 추출하는 방법?

스크린 샷과 같은 비디오에서 이미지 파일을 생성하는 방법을 의미합니다.



답변

함께 시도 ffmpeg

ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg

여기 에서 설명서를 읽을 수 있습니다

  • -i inputfile.avi 비디오 입력 파일은 inputfile.avi입니다.
  • -r 1비디오의 초당 이미지를 추출하십시오. 초당 얻고 자하는 이미지 수를 해당 숫자로 바꿉니다.
  • -f image2 프로그램이 파일 확장자에서 출력 이미지 형식을 선택하려고 시도하므로 강제로 이미지 출력 형식을 사용하지 않을 수 있습니다.
  • image-%3d.jpeg 출력 이미지 이름 인 % 3d는 출력으로 생성 된 이미지에 3 개의 10 진수 시퀀스 번호가 있음을 나타냅니다. 숫자가 0으로 채워지는 경우 % 03d 만 사용하면됩니다.

답변

방금 Windows 32-2.1.2 Rincewind 용 최신 VLC 버전을 다운로드했으며이 작업을 수행하는 것이 좋습니다.

단계 :

1-도구> 환경 설정을 클릭하고 단일 선택 단추를 모두 클릭하십시오.

2-아래로 스크롤하여 비디오 옆의 + 기호를 클릭하여 확장

3-아래로 스크롤하여 장면 필터를 클릭하고 디렉토리 경로 접두사 (프레임을 저장하려는 위치)에 대한 정보를 입력하십시오. 저장을 클릭하지 마십시오.

4-위로 스크롤하여 필터 아래에서 비디오라는 단어를 클릭하십시오.

5-장면 비디오 필터의 확인란을 클릭하고 저장을 클릭하십시오.

6-비디오를 열고 실행하면 .png가 저장됩니다.

7-프레임 저장을 중지하려면 5 단계로 돌아가 장면 비디오 필터를 선택 취소하십시오. 설정을 찾을 위치를 알고 있으면 정말 쉽습니다.


답변

이 도움을 바랍니다

#!/bin/bash
source_dir="."
output_dir="."
input_file_types=(avi wmv flv mkv mpg mp4)
output_file_type="jpg"

convert() {
        echo "" | ffmpeg -ss $ss -y -i "$in_file" -an -f image2 -vframes 1 "$output_dir/$out_file"
}

for input_file_types in "${input_file_types[@]}"
do

        find "$source_dir" -name "*.$input_file_types" -print0 | while IFS= read -r -d $'\0' in_file
        do
                echo "Processing…"
                echo ">Input  "$in_file
                # Replace the file type
                out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_types/\1$output_file_type/g")
            echo ">Output "$out_file

# get video duration
#    fulltime=`ffmpeg -i "$in_file" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//`;
#    hour=`echo $fulltime | cut -d ':' -f 1`;
#    minute=`echo $fulltime | cut -d ':' -f 2`;
#    second=`echo $fulltime | cut -d ':' -f 3 | cut -d '.' -f 1`;

#    seconds=`expr 3600 \* $hour + 60 \* $minute + $second`;
#    ss=`expr $seconds / 2`; # from the middle of video



    ss=`expr 10`; # from the 10sec of video



    # Convert the file
                convert "$in_file" "$out_file"

                if [ $? != 0 ]
                then
                    echo "$in_file had problems" >> ffmpeg-errors.log
                fi

                echo ">Finished "$out_file "\n\n"
        done
done


답변

VLC에서 마우스 오른쪽 단추로 비디오, 스냅 샷 찍기 가능


답변