簡介


AI 影片畫格 (幀) 插補程式,有以 Vulkan API 實現的版本,支援 AMD、NVIDIA、Intel GPU。

下載


DAIN ncnn Vulkan
https://github.com/nihui/dain-ncnn-vulkan

使用說明


基本用法

輸出 input1.png 與 input2.png 的中間畫面 output.jpg
dain-ncnn-vulkan -0 input1.png -1 input2.jpg -o output.jpg

輸入目錄 輸出目錄
dain-ncnn-vulkan -i input_frames/ -o output_frames/

選項說明

-h
顯示說明

-v
詳細輸出

-i input-path
設定輸入路徑,可為檔案路徑或目錄。

-o output-path
設定輸入路徑,可為檔案路徑或目錄路徑。

-n num-frame
設定目標影格數量,預設值為輸入的兩倍。

-t tile-size
設定分塊大小,>=32/0皆為自動, 預設為0。使用較小的值來減少 GPU 記憶體使用,預設值為自動。

-g gpu-id
使用 GPU,預設為0。可用 0,1,2 對於多 GPU。

-j load:proc:save
三階段執行續數量 (圖片解碼 + dain 插值 + 圖片編碼)。預設為 1:2:2,使用較大的值可能增加 GPU 使用率與消耗更多 GPU 記憶體。對於小尺寸圖片可用 4:4:4,而大尺寸圖片可用 2:2:2,預設值通常對於大多數情況都不錯。如果發現 GPU 負載很低,則嘗試增加執行續數量以加快處裡。

-f pattern-format
設定輸出的檔名規則與圖片格式 (%08d.jpg/png/webp, 預設為ext/%08d.png),例如`frame-%08d.png` 即 frame-00000000.png,frame-00000001.png, frame-00000002.png, ......。對於 png 格的支援性較好,webp 編碼輸出的檔案則較小,以上兩者皆為無損。

應用


由於 DAIN 不支援影片格式輸入,必須先將影片轉換成連續圖片再用 DAIN 處理圖片,由於是作為暫時的檔案,建議使用建議使用無損格式。最後將處理過的圖片轉成影片,再與片源音訊重新封裝合成新的影片檔即可。注意,CMD 中使用 %% 表示 %。以下示範使用 ffmpeg 將影片轉換成圖片再轉回影片。

基本用法
ffmpeg [options for input] -i inputfile [options for output] outputfile

影片轉換成連續圖片

為了方便之後將連續圖片轉換成影片,使用 `-r` 指定任意 fps 轉換為為固定不變的 fps 即 CFR。輸出檔名 `%7d` 為圖片的編號,由 0 起始,往前補 0 為 7 位數。

ffmpeg -i input.mpg -r 24000/1001 -f image2 "frames_original\%7d.png"

假設片源 input.mpg 影像規格為 `mpeg2video, yuv420p, 704x480 [SAR 40:33 DAR 16:9]`,由於`yuv420p` 與 png 不相容,ffmpeg 將自動轉換成其他合適格式,以及 png 不支援非 1:1 的 SAR,將輸出錯誤的 DAR (顯示比例): `704x480 [SAR 1:1 DAR 44:30]`。因此,之後將圖片轉回影片時可使用 `-pix_fmt` 與 `-aspect` 選項,來轉換像素格式與強制指顯示比例。

插補影格

假設 png 圖片檔的數量是 35964
目標 fps 值為 60

TargetFrames = SourceFrames * TargetFPS / SourceFPS = 35964 * 60 / (24000 / 1001) = 90000

dain-ncnn-vulkan -i frames_original -o frames_interpolation -n 90000


由於圖片的數量變化,之後將圖片轉回影片時必須強制指定 fps 為 60 (而非 24000/1001),以維持正確的播放速度。

連續圖片轉換成影片

輸入是連續圖片檔必須使用 `-r` 來強制指定正確的輸入 fps;使用 `-pix_fmt` 轉換像素格式與片源相同;使用 `-aspect` 修正錯誤的顯示比例。對 input.mpg 使用 `-vn` 禁用影像,並使用 `-c:a copy` 複製音訊。

將 frames_interpolation 目錄下的 PNG 圖片轉換成影片
ffmpeg -f image2 -r 60 -i "frames_interpolation\%8d.png" -vn -i input.mpg  -c:v libx264 -refs:v 5 -preset:v slower -crf:v 18 -pix_fmt yuv420p -aspect 16/9 -c:a copy output.mkv
文章關鍵字
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!