我應該按什麼順序使用 ffmpeg 的穩定和壓縮?

我應該按什麼順序使用 ffmpeg 的穩定和壓縮?

我在 Canon Vixia 上拍攝足球比賽視頻,它以 60fps 的高清速度和 h264 壓縮進行錄製。從相機中得到的檔案大小為 20GB,我使用 h265 對其進行了重新壓縮(以節省儲存空間並提高上傳速度),比特率上限為 7000k 和 60fps,這足以滿足我的需求。我使用帶有 AMD 顯示卡的 hevc_amf 編碼器,它將把 1h20m 的高清視訊重新壓縮為大約 40m (2x),我對此非常滿意。

最近,我學會如何使用 vidstab,它確實很好地清理了我不穩定的影片。所以現在我想用 vidstab 穩定並在存檔之前重新壓縮為 h265。我正在尋找一些關於如何以最有效的方式對工作流程進行排序的建議,同時仍然獲得良好的結果。我應該 1) 首先對我的原始 20G 檔案(檢測和轉換通道)執行 vidstab 嗎?或者,在進行穩定之前,我應該 2) 使用硬體加速 hevc_amf 編碼器重新壓縮嗎?

  1. 如果是第一個選項,則後續問題。我如下運行 vidstabtransform:
ffmpeg.exe -i input.mp4 -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 outputstabilized.mp4

這是根據 ffmpeg.org 文件。好像把碼率從原來的30Mbps變成了10Mbps左右。這是為什麼?我可以控制它並保持原始位元率嗎?我是不是該? (另外,我需要不銳化蒙版嗎?這是因為穩定功能有一些固有的變焦嗎?)。

這種方法的缺點似乎是使用 h265 可以獲得更好的壓縮效果考慮到像素移動較少,穩定性提高,但也許差異並不大。

  1. 如果是第二個選擇,我仍然可以控制穩定輸出的位元率嗎?

如果有人有其他推薦的工作流程,我也會洗耳恭聽。 (我曾考慮嘗試使用複雜的過濾器映射,但它們看起來......很複雜:)而且我還沒有投入時間來思考它們)。

先致謝!

答案1

vidstabdetect對原始文件運行過濾器。

vidstabtransform也在原始文件上運行過濾器,但使用 HEVC 編碼器產生最終輸出。過濾器在編碼器之前運行,因此變換將穩定原始輸入中的幀,然後再將其發送到編碼器。

相關內容