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.mp4
lư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 .