[英]FFMPEG multiple screenshots command
我正在嘗試編碼 function,它使用 ffmpeg 從視頻文件創建圖像。
但現在我想知道如何使用 ffmpeg命令准確地做到這一點,因為我使用包裝器,現在我有一些限制,所以我必須以本機方式使用 go。
所以,首先我決定使用一個叫做 node-fluent-ffmpeg 的包裝器。
這是我使用 Wrapper 的解決方法:
ffmpeg({
source: `The video file...`,
})
.on("filenames", async (filenames) => {
})
.on("error", function (err) {
console.log("Error in filenames section: " + JSON.stringify(err));
})
.on("end", function () {
console.log("Screenshots taken");
})
.screenshots({
count: 60,
folder: "tmp/",
filename: "thumbnail-at-%i.png",
size: "1600x900",
})
.on("end", function (stdout, stderr) {
let newImg = await fs.createReadStream(`/tmp/${img}`);
destparams = await {
Bucket: dstBucket,
Key: "uploaded-" + img,
Body: newImg,
ContentType: "image",
};
await s3.putObject(destparams).promise();
});
更好地理解我的注意事項:
我還是想在node.js
假設文件是:“視頻文件...”
我以隨機方式從視頻中截取 60 個屏幕截圖,就像視頻的長度無關緊要一樣,從視頻開始到結束只截取 60 個屏幕截圖。
截取的每張屏幕截圖都會有一個前綴和有序的數字和每一幀的名稱。 例如: thumbnail-at-1.png、thumbnail-at-2.png、thumbnail-at-3.png 並一直持續到達到 60 個屏幕截圖限制。
每個屏幕截圖都將以 1600x900 的分辨率保存。
每個屏幕截圖都將保存在 TMP 文件夾中。
不要介意閱讀此內容:畢竟我會將每個屏幕截圖上傳到 s3 存儲桶。
我搜索了很多舊論壇,但似乎 ffmpeg 的文檔很差(我被卡住了,很難理解)。
所以我的主要目標是:
我如何使用 FFMPEG 命令准確制作代碼示例和快速注釋中顯示的 function? (不帶包裝紙)
(對不起,我試圖讓它更簡單)
我的意思是,我必須使用哪些命令,以及以下代碼示例中的 FFMPEG 命令?
順便說一句:它是node.js,
真的不知道該怎么辦,抱歉
spawnSync(
"/opt/ffmpeg/ffmpeg",
[
"-i",
``,
"-f",
"",
``
],
{ stdio: "inherit" }
);
謝謝你的耐心!
環境:
主要問題是獲取視頻的持續時間,所以只要你有 ffprobe 你就應該能夠做到這一點:
獲取持續時間然后除以 60,將數字轉換為時間戳。
ffprobe -v quiet -print_format json -show_format -show_streams "<FILENAME>"
然后將 JSON 解析為format.duration
,然后除以你想要的屏幕數。
然后通過執行dateformat('H:i:s', i * (format.duration / 60))
(偽)循環 60 多次以在特定時間戳獲得單個幀:
ffmpeg -ss 00:00:00 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-0.png"
ffmpeg -ss 00:00:10 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-1.png"
ffmpeg -ss 00:00:20 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-2.png"
...
ffmpeg -ss 00:09:30 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-57.png"
ffmpeg -ss 00:09:40 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-58.png"
ffmpeg -ss 00:09:50 -i "infile.mp4" -t 00:00:01 -r 1 -f mjpeg "thumbnail-at-59.png"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.