簡體   English   中英

使用 ffmpeg 從視頻創建縮略圖

[英]Create thumbnail from video using ffmpeg

我需要在將視頻上傳到 CDN 時從視頻創建縮略圖。

我一直在尋找這個發現這個但即使按照以下步驟我也無法獲得屏幕截圖。

我正在使用 jwplayer 播放視頻

有人可以在使用 ffmpeg 上傳視頻時幫我創建縮略圖嗎

我不知道在上傳時制作屏幕截圖的方法,但我知道之后該怎么做。

最簡單的代碼是:

ffmpeg -i input.mp4 -ss 00:00:01.000 -vframes 1 output.png

上傳文件后運行此腳本。 如果在視頻開頭截取屏幕截圖,則只需很短的時間。 (例如第一分鍾)。

我認為在文件仍在上傳時無法截取屏幕截圖。

編輯:刪除了-f image2因為 ffmpeg 猜測它是正確的

其他答案很好......但對於大多數“視頻”內容, JPEG是縮略圖圖像更節省空間的選擇。 此答案討論 JPEG 質量設置。

通常你會想要指定縮略圖的大小- 下面的命令 ( source ) 將縮小視頻以適應 320x320 的框(通過減小較小的邊緣來保持縱橫比 - 即長邊上的 320 像素):

ffmpeg -ss 00:00:01.00 -i input.mp4 -vf 'scale=320:320:force_original_aspect_ratio=decrease' -vframes 1 output.jpg

根據此文檔https://trac.ffmpeg.org/wiki/Seeking和我的個人測試,您應該像這樣更改 -ss 和 -i 的位置

ffmpeg -ss 00:00:01.000 -i input.mp4 -vframes 1 output.png

由於不進行視頻解碼,操作將變得更快。 視頻將使用關鍵幀來解析,這非常快。

$ffmpegPath = exec('哪個 ffmpeg'); $ffprobePath = exec('哪個ffprobe');

$command = "$ffprobePath -v 錯誤 -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $input_video"; $video_duration = shell_exec($command);

$thumbnails_output = '輸出%02d.png'; $command = "$ffmpegPath -i $input_video -vf fps=3/$video_duration $thumbnails_output"; shell_exec($command)

這是我的 bash 腳本,用於創建視頻的 n 個縮略圖(在示例中有 11 個,但您可以更改它)它在整個視頻長度上定期執行此操作。

#!/bin/bash

for input_video in "$@"
do
  duracion=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$input_video");
  #echo $duracion;

  ffmpeg -i "$input_video" -vf fps=11/$duracion "$input_video%02d.png";
  #echo "  ffmpeg -i \"$input_video\" -vf fps=3/$duracion  \"$input_video%02d.png\"";

done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM