Làm thế nào để trích xuất hình ảnh từ tập tin video?


Câu trả lời:


18

Thử với ffmpeg

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

Bạn có thể đọc tài liệu ở đây


1
liên kết của bạn dường như bị hỏng
Nolwennig 24/2/2016

@Nolwennig. Đã sửa, không cụ thể như trước đây nhưng ít nhất là tài liệu chính thức và khó bị phá vỡ.
YoMismo

3
-r 1là cho số lượng hình ảnh mỗi giây. Vì vậy, trong 60ips, hoặc 24, nó -r 24. Và để hạn chế trích xuất, nó -ss [start] -t [duration].
Sandburg

Cảm ơn, hoạt động tốt trên
Xubfox

2

Tôi vừa tải xuống phiên bản VLC mới nhất cho Windows 32 - 2.1.2 Rincewind và nó hoạt động tốt để làm điều này.

Các bước:

1 - Nhấp vào Công cụ> Tùy chọn và nhấp vào nút radio Tất cả

2 - Cuộn xuống và nhấp vào dấu + bên cạnh Video để mở rộng

3 - Cuộn xuống và nhấp vào Bộ lọc cảnh và điền thông tin cho tiền tố Đường dẫn thư mục (nơi bạn muốn lưu khung). Đừng nhấp vào Lưu.

4 - Cuộn lên và nhấp vào từ Video trong Bộ lọc

5 - Nhấp vào hộp kiểm cho Bộ lọc video cảnh và nhấp vào Lưu.

6 - Mở và chạy video và nó sẽ lưu .png's

7 - Để dừng lưu khung, quay lại bước 5 và bỏ chọn Bộ lọc video cảnh. Dễ dàng thực sự một khi bạn biết nơi để tìm các cài đặt.


0

Hy vọng điều này giúp đỡ

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

Trong VLC, bạn có thể nhấp chuột phải, Video, Chụp ảnh nhanh


Điều này nghe có vẻ hơi tốn công nếu người ta cần hình ảnh, ví dụ như mỗi khung hình trong cảnh.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.