題 ffmpeg錯誤:-vf / -af / -filter和-filter_complex不能一起使用


我正在嘗試運行以下cmd,它應該為視頻添加水印並將其升級。

ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1  -preset 
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"

我收到以下錯誤。

Filtergraph 'scale=854:-1' was specified through the 
-vf/-af/-filter option for output stream 0:0, which is fed from 
a complex filtergraph. -vf/-af/-filter and -filter_complex 
cannot be used together for the same stream.

在我嘗試升級之前(沒有-vf scale = 854:-1),cmd用於水印。

我怎樣才能實現這兩個目標?

我試過了什麼?

  • 在輸入之前,輸入之後移動-vf參數等。

4
2017-07-11 14:22


起源


你想升級嗎? in.avi, logo.png,或者來自的輸出 overlay 過濾?你應該使用一個 FilterGraph動態 對於你的所有過濾。 - LordNeckbeard
@LordNeckbeard我希望只是升級in.avi,我試圖在in.avi之後移動-vf比例,也就在命令之前,但是它沒有用。現在去閱讀有關filtergraph的信息謝謝! - cecilli0n
@LongNeckbeard filtergraph工作 -filter_complex“scale = 854:-1,overlay = 5:5”。如果您想將其作為答案發布,我將很樂意將其標記為已接受。謝謝! - cecilli0n


答案:


你可以用一個 FilterGraph動態 做所有過濾:

ffmpeg -i input.avi -i logo.png -filter_complex \
"[0:v]scale=854:-2[scaled]; \
 [scaled][1:v]overlay=5:5[out]" \
-map "[out]" -map 0:a -c:v libx264 -c:a copy output.mkv
  • [0:v] 是指第一個輸入的視頻流(input.avi 在這個例子中)。 [1:v] 是來自第二個輸入的視頻(logo.png 在這個例子中)。

  • 音頻是 蒸汽複製 在這個例子中,而不是重新編碼;假設您的第一個輸入有音頻。

  • 最佳做法是手動命名過濾器輸入和輸出,例如在此示例中,而不是依賴於可能導致不正確的流選擇的默認值。

  • -2 在裡面 縮放視頻濾鏡 用來代替 -1 因為當輸出到4:2:0色度子採樣時,x264要求輸出可被2整除:

如果其中一個值為-n且n> 1,則比例過濾器還將使用一個值,該值保持輸入圖像的縱橫比,從另一個指定的維度計算。之後,它將確保計算出的尺寸可被n整除,並在必要時調整該值。


10
2017-07-12 04:22