如何从视频文件中提取图像?


Answers:


20

试试看 ffmpeg

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

您可以在这里阅读文档

  • -i inputfile.avi 视频输入文件为inputfile.avi
  • -r 1每秒提取1张图像。将该数字替换为您每秒想要获取的图像数。
  • -f image2 强制使用图像输出格式,由于程序尝试从文件扩展名中选择输出图像格式,因此您可能可以省略此格式。
  • image-%3d.jpeg 输出图像的名称,%3d表示输出的生成图像的序列号的后半部分为3个小数,如果要用零填充数字,则只需要使用%03d。

1
您的链接似乎已断开
Nolwennig

@Nolwennig。固定的,不如上一个的具体,但至少是官方文档,几乎没有被破坏。
YoMismo

3
-r 1是每秒的图像数。因此,对于60ips或24ips而言-r 24。为了限制摘录,它是-ss [start] -t [duration]
桑德堡

谢谢,在Xubuntu
IndacocheaWachín上做得

3

我刚刚下载了Windows 32-2.1.2 Rincewind的最新VLC版本,可以很好地完成此操作。

脚步:

1-单击工具>首选项,然后单击单选按钮全部

2-向下滚动并单击视频旁边的+号以展开

3-向下滚动并单击“场景过滤器”,然后填写“目录路径”前缀(您要保存帧的位置)的信息。不要单击“保存”。

4-向上滚动并单击“过滤器”下的“视频”一词

5-单击“场景视频”过滤器复选框,然后单击“保存”。

6-打开并运行视频,它将保存.png的视频

7-要停止保存帧,请返回步骤5,然后取消选中“场景视频过滤器”。一旦知道在哪里可以找到设置,就很容易。


0

希望有帮助

#!/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

0

在VLC中,您可以右键单击,视频,快照


如果一个人需要例如场景中的每一帧图像,这听起来有点费力。
库萨兰达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.