2013-05-06 21 views
6

我需要批量處理一堆視頻以將其高度縮放到240,以保持縱橫比相同。該得到這份工作幾乎完成的命令是:使用libav過濾器縮放視頻時出錯

$ avconv -threads 4 -ss 0.0 -i input.avi \ 
-map 0:0,0:0 -map 0:1,0:1 -vf "scale=-1:240" -y -f mpegts \ 
-async -1 -vcodec libx264 -vcodec libx264 -flags2 +fast \ 
-flags +loop -g 30 -bufsize 1024k \ 
-b 200k -bt 220k -qmax 48 -qmin 2 -r 20 -acodec libmp3lame \ 
-ab 44k -ar 44100 -ac 2 output.ts 

有趣的地方,你可以看到,是-vf "scale=-1:240"

這部作品在縮放的輸出寬度原來是偶數視頻。否則,我收到以下錯誤消息:

[libx264 @ 0x7fc4f8821e00] width not divisible by 2 (341x240) 

我該如何克服這個問題?

編輯: 根據此link,我嘗試使用輸出電影,但最終的視頻質量真的很差。

編輯#2: 這是不是重複,因爲它被錯誤標記。這個問題比另一個提前得多。

+0

至於複製它並沒有真正無論哪個問題是舊的。通常,選票較少的問題會被標記爲重複。 – LordNeckbeard 2016-12-08 03:56:18

+0

@LordNeckbeard這也是有道理的,但是與上面的框中SO自己的定義相矛盾,特別是 - 「被標記爲重複的......這個問題之前已經被問過並且已經有了答案」。 – 2016-12-08 06:03:56

+0

是的,這個問題已被多個用戶多次詢問。爭論誰是第一個是浪費時間。解決方案對於所有人來說都是一樣的:作爲副作用,有些將被標記爲重複,而不管時間順序如何。更重要的是:1)人們在提問之前不要搜索。 2)人們提出與編程毫無關係的題外話題:Stack Overflow僅用於編程問題。 – LordNeckbeard 2016-12-08 18:29:15

回答

8

更新;您現在可以使用:

-vf scale=-2:240 

Is there a good list of mp4 supported resolutions and a way to have ffmpeg calculate the width after modifying by set height ratio?


鏈接實際上說:

scale="854:trunc(ow/a/2)*2" 

其正確縮放高度爲偶數,如果你想縮放 寬度您必須使用此習語:

背後
-vf scale="trunc(oh*a/2)*2:240" 
#    ^
#    /
#  notice --- 

數學:

iw ow 
-- = -- 
ih oh 

ow = (iw * oh)/ih 
ow = oh * a 
+0

這些縮寫代表什麼? – Xeoncross 2013-05-06 15:03:12

+0

@StevenPenny這是絕對正確的。當然,寬高比需要倍增而不是分割。謝謝 – 2013-05-07 05:15:12

相關問題