想知道如何開始?需要:如何使用像Facebook這樣的nodejs製作視頻模塊
大約10張照片,能夠產生一個5-10秒的小視頻,例如動畫(轉換?),我想重現facebook視頻過程,如果有人知道這一點,哪個技術棧是最好的,模塊(ffmpeg,wrapper ffmpeg)(pyhton,nodejs)。
THX
想知道如何開始?需要:如何使用像Facebook這樣的nodejs製作視頻模塊
大約10張照片,能夠產生一個5-10秒的小視頻,例如動畫(轉換?),我想重現facebook視頻過程,如果有人知道這一點,哪個技術棧是最好的,模塊(ffmpeg,wrapper ffmpeg)(pyhton,nodejs)。
THX
我將開始與這個答案在這裏:https://superuser.com/questions/833232/create-video-with-5-images-with-fadein-out-effect-in-ffmpeg/834035#834035
具體ffmpeg的混合濾波器例如:
ffmpeg \
-loop 1 -t 1 -i 001.png \
-loop 1 -t 1 -i 002.png \
-loop 1 -t 1 -i 003.png \
-loop 1 -t 1 -i 004.png \
-loop 1 -t 1 -i 005.png \
-filter_complex \
"[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v]concat=n=9:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
這會給你的輸出MP4,每張圖片持續一其次,圖像之間有0.5秒的褪色。
-t 1
這是圖像的持續時間
T,0.5
是您的漸變時間
如果你正在尋找使用節點,我會建議流利-的ffmpeg庫:https://github.com/fluent-ffmpeg/node-fluent-ffmpeg
我喜歡節點作爲解決方案,因爲您可以使用單線程併發事件循環,它將作業傳遞到您的ffmpeg模塊,並允許ffmpeg佔用您機器上的所有可用核心。
你可能有一個功能,看起來是這樣的:
function runFfmpeg({inputParams, input, outputParams, output}) {
return new Promise((resolve, reject) => {
const ffmpegCommand = new ffmpeg()
ffmpegCommand.input(input)
.inputOptions(inputParams)
.on('start', (command) => {
// log start
})
.on('progress', (progress) => {
// log progress
})
.on('end',() => {
resolve('SUCCESS!')
})
.on('error', (error) => {
reject(error)
})
.outputOptions(outputParams)
.output(output)
.run()
})
}
所以這只是包裝你的ffmpeg的過程中承諾,它將解決上完成,並拒絕上的錯誤。你會把這個函數的命令行輸入參數,輸入文件,輸出參數和輸出文件......至少是這樣的。你可能必須適應多輸入,但他們的github是非常有據可查的!
Thx for ur response,會檢查出來:) – aharit
「facebook視頻流程」究竟是什麼? – lux