FFmpeg

来自Tsetien’s Wiki
跳转到导航 跳转到搜索

移除或寫入後設資料

remove all metadata
-map_metadata -1 -map_chapters -1 -metadata:s handler_name= -metadata:s vendor_id= -disposition 0
或透過組合選用以下來按需添加。須知:不是所有的檔案類型/容器都支援以下所有的關鍵字。
album
-metadata album=""
album artist
-metadata album_artist=""
artist
-metadata artist=""
author
-metadata author=""
comment
-metadata comment=""
compilation
-metadata compilation=""
composer
-metadata composer=""
date
-metadata date=""
disc (no/total)
-metadata disc=""
episode ID
-metadata episode_id=""
episode sort
-metadata episode_sort=""
genre
-metadata genre=""
grouping
-metadata grouping=""
language
-metadata language=""
location
-metadata location=""
lyrics
-metadata lyrics=""
make
-metadata make=""
model
-metadata model=""
network
-metadata network=""
performer
-metadata performer=""
publisher
-metadata publisher=""
season number
-metadata season_number=""
show
-metadata show=""
synopsis
-metadata synopsis=""
title
-metadata title=""
track (no/total)
-metadata track=""

downscaling

使用

-vf format=gbrpf32le,zscale=transferin=bt709:transfer=linear,zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)':f=lanczos:param_a=4:param_b=0.6:dither=error_diffusion,zscale=transferin=linear:transfer=bt709,unsharp=5:5:0.5:3:3:0.0,format=yuv444p10le,setsar=1

來 down­sc­a­le, 此處以 down­sc­a­le 到使其長邊不超過 1280 px 為例。

其中,dither=error_diffusion 部分可以改為 dither=none 來不添加任何 di­the­ring, 或刪去以讓 ffmpeg 採用預設。

加入 hqdn3d=1:1:2:2, 直接在 -vf  後面可略微「抹勻」(de­no­i­sing) 畫面。更強烈的「抹勻」效果可以透過調整 hqdn3d 的值來實現,比如改用 hqdn3d=1.5:1.0:3:2,hqdn3d=2:1:2:1,.

便利貼:

no dithering
-vf format=gbrpf32le,zscale=transferin=bt709:transfer=linear,zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)':f=lanczos:param_a=4:param_b=0.6:dither=none,zscale=transferin=linear:transfer=bt709,unsharp=5:5:0.5:3:3:0.0,format=yuv444p10le,setsar=1
no dithering, no sharpening
-vf format=gbrpf32le,zscale=transferin=bt709:transfer=linear,zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)':f=lanczos:param_a=4:param_b=0.6:dither=none,zscale=transferin=linear:transfer=bt709,format=yuv444p10le,setsar=1
having both diffusion and hqdn3d
-vf hqdn3d=1:1:2:2,format=gbrpf32le,zscale=transferin=bt709:transfer=linear,zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)':f=lanczos:param_a=4:param_b=0.6:dither=error_diffusion,zscale=transferin=linear:transfer=bt709,unsharp=5:5:0.5:3:3:0.0,format=yuv444p10le,setsar=1
no dithering, but with hqdn3d
-vf hqdn3d=1:1:2:2,format=gbrpf32le,zscale=transferin=bt709:transfer=linear,zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)':f=lanczos:param_a=4:param_b=0.6:dither=none,zscale=transferin=linear:transfer=bt709,unsharp=5:5:0.5:3:3:0.0,format=yuv444p10le,setsar=1

若 sc­a­ling 的原則是依照短邊不超過 720 px 為準,則可將以上命令塊中的 zscale=w='if(gte(iw,ih),min(1280,iw),-2)':h='if(lt(iw,ih),min(1280,ih),-2)' 部分以 zscale=w='if(lt(iw,ih),min(720,iw),-2)':h='if(gte(iw,ih),min(720,ih),-2)' 取代之。

使用封面圖片與歌曲來制作歌曲的視訊檔

參考以下兩個模板——

1080p crf 25 + 256kVBR
ffmpeg -loop 1 -i cover.png -i song.wav -vf format=rgba64le,colorchannelmixer=aa=1,crop='floor(min(iw,ih)/2)*2:floor(min(iw,ih)/2)*2',scale=-2:1080:flags=lanczos+accurate_rnd+full_chroma_inp+full_chroma_int:param0=4,format=yuv444p10le,setsar=1 -r 1 -c:v libsvtav1 -pix_fmt yuv420p10le -preset 1 -crf 25 -g 720 -svtav1-params "tune=0:enable-qm=1:aq-mode=1:lookahead=120:scd=1" -c:a libopus -b:a 256k -t hh:mm:ss.xx -map_metadata -1 -map_chapters -1 -metadata:s handler_name= -metadata:s vendor_id= -disposition 0 -metadata album="" -metadata album_artist="" -metadata artist="" -metadata composer="" -metadata date="" -metadata genre="" -metadata title="" "output.webm"
720p crf 23 + 160kVBR
ffmpeg -loop 1 -i cover.png -i song.flac -vf format=rgba64le,colorchannelmixer=aa=1,crop='floor(min(iw,ih)/2)*2:floor(min(iw,ih)/2)*2',scale=-2:720:flags=lanczos+accurate_rnd+full_chroma_inp+full_chroma_int:param0=4,format=yuv444p10le,setsar=1 -r 1 -c:v libsvtav1 -pix_fmt yuv420p10le -preset 1 -crf 23 -g 720 -svtav1-params "tune=0:enable-qm=1:aq-mode=1:lookahead=120:scd=1" -c:a libopus -b:a 160k -t hh:mm:ss.xx -map_metadata -1 -map_chapters -1 -metadata:s handler_name= -metadata:s vendor_id= -disposition 0 -metadata album="" -metadata album_artist="" -metadata artist="" -metadata composer="" -metadata date="" -metadata genre="" -metadata title="" "output-small.webm"

不要嘗試使用 -shortest 來取代 -t hh:mm:ss.xx (具體時間須視歌曲時長手動填入), 因為這樣得出的長度一定是長於歌曲的具體時長的。

libsvtav1

AV1 在任何情況下都應當僅作為網路分發考慮,如果以在地蒐藏為目的,仍需認準 H265. 一個 crf 在 20 到 23 之間的 veryslow 的 H265 至今仍可在任何方面(除了速度)遠超 AV1.

在前述的前提下,AV1 在低位元速率的應用場合中,表現還是要遠好於 H264 的,因此比較適合在網路上使用。

總體上來說,可以套用以下設定——

-c:v libsvtav1 -pix_fmt yuv420p10le -preset 2 -crf 33 -svtav1-params "tune=0:enable-qm=1:aq-mode=1:lookahead=120:scd=1"

來壓出一個看起來還說得過去的質量。crf 設在 33 上看起來不高,但是其實調高(其實是調低)它的設定也未見得能將畫質提高到哪裡去,反而會徒增檔案的大小,得不償失。libsvtav1 的優勢在於速度快,而且在低位元速率下效果好,因此維持 crf 設在 33 上其實並不太過「低劣」,如果畫面內容動得厲害,還可以降至 36, 39, 42, 乃至 45——到 45 就確實有點渣了,但也不是不能看。如果畫面著實平穩,少有動的,則減到 30 或者 27 就了得了,再減並無任何必要,要時刻銘記,AV1 只適合在網路上分發,因此低位元速率下一個看得過去的畫質才是 AV1 的長處。