Ca sử dụng của tôi chỉ là một hình thu nhỏ từ video, chỉ là một tệp duy nhất để sử dụng làm <video>poster poster. Vì vậy, điều gì sẽ là một cách nhanh chóng để thực hiện điều này?
Với ffmpeg, bạn có thể làm điều này:
ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
Điều đó sẽ cung cấp cho bạn khung gần thứ hai 123được video.mp4lưu dưới dạng poster.jpg.
Vấn đề, như bạn có thể thấy, là chúng ta cần biết thứ hai nào là đúng.
Để giữ cho sự phụ thuộc của chúng tôi ở mức thấp, chúng tôi sẽ sử dụng chính ffmpeg cho việc này:
# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
25% video có vẻ như là một lựa chọn phổ biến, nhưng bạn cũng có thể làm cho nó 33% hoặc 50%.
Đây là một kịch bản làm điều này .