ffmpeg解決cpu占用過(guò)高 遠(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ù))。您可以編寫一個(gè)服務(wù),負(fù)責(zé)調(diào)度f(wàn)fmpeg并為每個(gè)請(qǐng)求打開(kāi)一個(gè)新的ffmpeg解碼線程。需要注意的是,ffmpeg對(duì)內(nèi)存的要求很高,因此線程不愿意無(wú)限期地增加。因此需要編寫一個(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本身實(shí)現(xiàn)了RTMP協(xié)議的解析。您可以查看源代碼的詳細(xì)信息,但性能不如librtmp,它不支持rtmpt,rtmps等
Ffmpeg只是一個(gè)解碼器,Mplayer是一個(gè)播放器。兩者之間沒(méi)有可比性。此外,如果沒(méi)有解碼器,您的計(jì)算機(jī)無(wú)法播放某些視頻。此外,解碼速度取決于您的CPU(軟解決方案)圖形卡(硬解決方案)。也就是說(shuō),如果你的電腦配置不好,播放這些高清電影之類的東西是不順暢的,就像幻燈片放映一樣