답변:
함께 시도 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 만 사용하면됩니다.-r 1
초당 이미지 수입니다. 따라서 60ips 또는 24의 경우 -r 24
입니다. 그리고 추출을 제한하려면 -ss [start] -t [duration]
입니다.
방금 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