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