簡體   English   中英

ffmpeg過濾器的大小可變

[英]Variable size for ffmpeg filter

我正在創建一堆腳本來輕松使用ffmpeg。

我所有的腳本現在都可以使用,但是很多值都經過了硬編碼,這使它們想要視頻的確切大小(854x240,我的測試視頻的大小)

一個好例子勝於冗長的解釋:

ffmpeg -i 0.mp4 -vf "
scale=854/2:-1 [low];
color=c=black@1.0:s=854x240:r=29.97:d=30.0 [bg];
movie=1.mp4, scale=854/2:-1 [high];
[bg][high] overlay=0:0 [bgh];
[bgh][low] overlay=854/2:-1" leftright.mp4

它需要0.mp4和1.mp4並排放置在同一視頻中。 但是尺寸值是硬編碼的。 但這有效。

我知道我可以將iw和ih用作第一個比例濾鏡的“輸入寬度”和“輸入高度”,但是當我嘗試將其他任何內容用作彩色背景的尺寸時,它只會拋出一個錯誤:

Unable to parse option value "iw:ih" as image size
Unable to parse option value "iw:240" as image size
Unable to parse option value "860*2:240" as image size

我最終又放了1720x240,這確實很糟糕。

有沒有辦法繞過這個,或輸入依賴於輸入的值?

編輯:

從視頻1.mp4(854x240)和2.mp4(520x520)(示例值)開始,將它們並排放在out.mp4中(在這種情況下,尺寸為max(height)x(2xmax(width))) ,因此在本例中為854x1040),且背景為黑色。

  ax
<---->
.____.^
|    ||
|  1 ||
|    ||ay
|    ||
|____|V

    bx
<-------->
.________.^
|   2    ||by
|________|V

最終會變成

ay>ax
bx>by

    bx        bx
<--------><-------->
xx.____.xxxxxxxxxxxx^
xx|    |xxxxxxxxxxxx|
xx|  1 |xx.________.|
xx|    |xx|    2   ||ay
xx|    |xx|________||
xx|____|xxxxxxxxxxxxV

看起來該工具在使用這些ihiw符號方面有一些限制,這使它們無用。 顯而易見的事情是繞過所有這些麻煩,並使用您的腳本語言進行算術運算,然后將結果插值到命令行中。 例如,如果您使用Bash編寫腳本:

x=42
y=53
command "--option=$((2 * x + y))" # pass twice x plus y as value to --option

您可以運行ffmpeg -i <videofile>以獲得有關文件的信息(例如大小),並將其從工具的輸出中解析出來。 使用它來設置一些shell變量,並計算所需的任何因變量,然后在執行轉碼的ffmpeg命令行中的所有正確位置替換變量或$(( ...))公式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM