ffmpeg 多執行緒測試結果

2021-08-15 03:45:31 字數 1097 閱讀 1374

其實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

320x240 -vcodec libx264 out290.mp4) 2>&1 | tee $i.txt

done

cat /proc/cpuinfo | grep processor

processor : 0

processor : 1

processor : 2

processor : 3

processor : 4

processor : 5

processor : 6

processor : 7

processor : 8

processor : 9

processor : 10

processor : 11

我的12核測了下

tail 生成檔案檢視結果

[otvcloud@localhost youjieq]$ for i in `ls [1-9].txt` ; do a=`cat $i|grep speed`;a=$;echo

"$i,speed=$a"; done

1.txt,speed=0.935x

2.txt,speed=1.51x

3.txt,speed=1.78x

4.txt,speed=1.87x

5.txt,speed=1.89x

6.txt,speed=1.89x

7.txt,speed=1.89x

8.txt,speed= 1.9x

9.txt,speed=1.88x

雙核有明顯提公升,四核後結果都差不多

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

ffmpeg為了提高解碼速度,可以使用多執行緒併發解碼,分為執行緒級併發解碼和片級併發程式設計。併發解碼需要解決多幀依賴問題。如同時對i幀和p幀解碼,p幀依賴於i幀,怎麼辦?ffmpeg採用演算法如下 1.每個執行緒在解碼完一行巨集塊後,更新解碼高度h1 2.b p幀解碼巨集塊時,需要把待解碼巨集塊...

FFmpeg 中的多執行緒解碼

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

C 11多執行緒 執行緒結果future

先用std async啟動乙個非同步任務,它返回乙個持有計算結果的std future,通過std future get即可阻塞執行緒,直到期值的狀態為ready並返回該結果 intf int main intf 函式必須非同步執行,即執行在不同的執行緒上 auto ft1 std async st...