FFMPEG多執行緒併發解碼的效率測試

2021-09-22 21:14:49 字數 531 閱讀 4525

ffmpeg為了提高解碼速度,可以使用多執行緒併發解碼,分為執行緒級併發解碼和片級併發程式設計。併發解碼需要解決多幀依賴問題。如同時對i幀和p幀解碼,p幀依賴於i幀,怎麼辦?ffmpeg採用演算法如下:

1.每個執行緒在解碼完一行巨集塊後,更新解碼高度h1

2.b/p幀解碼巨集塊時,需要把待解碼巨集塊h2與h1比較,h2>=h1,執行緒阻塞等待。

3.每個執行緒更新解碼高度是,阻塞執行緒會被喚醒比較高度。

具體這種多執行緒機制有沒有效果呢?做個分析試驗:

實驗中,分別設定併發執行緒 為1,2,4,6,8,10的解碼時間。資料統計資訊匯入excel如下:

折線圖分析結果:

從圖中可以看出,從執行緒1到2,4,6解碼時間是成倍縮小的,6,8,10再增加執行緒的話,解碼時間就沒有明顯改進。 

FFmpeg 中的多執行緒解碼

ffmpeg 中使用到的多執行緒的概念 互斥鎖 mutex lock 是一種訊號量,用來防止兩個執行緒在同一時刻訪問相同的共享資源,它有鎖定狀態和非鎖定狀態。在任意時刻,乙個執行緒要想訪問共享資料,執行緒必須首先獲得mutex lock,當此執行緒釋放此共享資料的時候必須對mutex lock解鎖,...

ffmpeg 多執行緒測試結果

其實ffmpeg支援多執行緒轉碼,但是試驗下來效果並不是和想象中的好,測試結果貼下,以饗讀者 網上有個指令碼根據核數測 bin bash echo input num read num for i 1 i num i i 1 do time ffmpeg y threads i i in.mp4 s...

(多執行緒)多執行緒的併發安全

多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...