ffmpeg使用多線程提速 遠(yuǎn)程服務(wù)器怎么使用ffmpeg?
遠(yuǎn)程服務(wù)器怎么使用ffmpeg?這取決于框架和操作系統(tǒng)。通常,腳本字符串可以直接作為參數(shù)處理。這種方法的缺點(diǎn)是它將啟動(dòng)一個(gè)新的過(guò)程。另一種方法是將ffmpeg編譯到項(xiàng)目中(建議將main函數(shù)改為可調(diào)用
遠(yuǎn)程服務(wù)器怎么使用ffmpeg?
這取決于框架和操作系統(tǒng)。
通常,腳本字符串可以直接作為參數(shù)處理。這種方法的缺點(diǎn)是它將啟動(dòng)一個(gè)新的過(guò)程。另一種方法是將ffmpeg編譯到項(xiàng)目中(建議將main函數(shù)改為可調(diào)用函數(shù))。您可以編寫(xiě)一個(gè)服務(wù),負(fù)責(zé)調(diào)度f(wàn)fmpeg并為每個(gè)請(qǐng)求打開(kāi)一個(gè)新的ffmpeg解碼線程。需要注意的是,ffmpeg對(duì)內(nèi)存的要求很高,因此線程不愿意無(wú)限期地增加。因此需要編寫(xiě)一個(gè)線程池來(lái)保持線程數(shù)。超過(guò)線程數(shù)的請(qǐng)求被線程釋放的塊所知。這仍然是一個(gè)問(wèn)題,因?yàn)橐曨l流是一個(gè)長(zhǎng)期的處理過(guò)程,所以在資源有限的情況下處理高并發(fā)是不夠的。最后一種方法是使用nginx-RTMP連接多個(gè)視頻流,然后將不同的視頻包扔到同一個(gè)線程隊(duì)列中進(jìn)行處理,然后進(jìn)行解碼和分發(fā)。這種高并發(fā)性能可能更好,缺點(diǎn)是每個(gè)人都可能卡住
ffmpeg調(diào)用雙核雙線程處理器的hwaccel,這與普通的雙核四線程解碼器不同。不同的是處理器的運(yùn)算速度不一樣
ffmpeg解碼是調(diào)用ffmpeg的開(kāi)源庫(kù)函數(shù)進(jìn)行解碼,屬于軟件解碼。硬件解碼是利用DSP等解碼芯片對(duì)ffmpeg無(wú)關(guān)的算法進(jìn)行解碼。