ffmpeg將webm格式轉換成mp4
- 起因
- 轉換成HEVC編碼(H.265)
- 轉換成AVC編碼(h.264)
起因
手頭有一部4K風景視頻,辛辛苦苦從油管上下載下來,想要用wallpaper engine做成壁紙,卻發現格式是webm,vp9編碼,wallpaper engine并不支持,所以想要將格式進行轉換,
怎么說呢,感徑訓是ffmpeg更方便,就是引數很難調,所以在此記錄一下,
轉換成HEVC編碼(H.265)
因為是使用的硬體編碼,硬體編碼教程
ffmpeg -c:v vp9_cuvid -i video.webm -c:v hevc_nvenc -cq 0 video.mp4
引數解釋:
- -c:v :指定編解碼器
- -i : 指定輸入引數
- vp9_cuvid : 使用nvdia硬體vp9解碼器
- hevc_enc: 使用nvdia硬體h.265編碼器
- -cq : 也就是軟壓的-crf引數很類似,控制碼率的引數,0最低對應畫質好,數字越大越差
轉換之后發現wallpaper engine不支持hevc,麻了,而且碼率輸入進去的有20000K左右,出來只有2000K了,壓得實在太狠了,
轉換成AVC編碼(h.264)
考慮到想要無損編碼,至少碼率不要損失得太嚴重,所以找到了新的解決辦法
根據這篇博客
這次采用的是硬解軟編
輸出直接用CPU編碼了
ffmpeg -c:v vp9_cuvid -i video.webm -c:v libx264 -preset ultrafast -qp 0 video.mp4
引數解釋:
- libx264: 使用軟體h.264編碼器
- -qp : constant quantizer恒定量化器模式,并且畫質為無損的畫質
- -preset : 使用預設引數,preset由快到慢可以分為:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo這9個等級
- ultralfast預設引數最快
好家伙,最快的情況下CPU編碼比GPU還快,但是輸出碼率超級無敵大,簡直就是直接往硬碟里面寫資料罷了,換成fast試過,馬上就慢下來不敵GPU了,
最后委屈求全,手動指定碼率,并且采用h.264硬體編碼
ffmpeg -c:v vp9_cuvid -i video.webm -c:v h264_nvenc -b:v 23000k video.mp4
引數解釋:
- h264_nvenc: 使用硬體h.264編碼器
- -b:v : 控制平均碼率
總算是解決了,即把視頻轉碼了,也沒損失太多碼率保證了畫質,然后可以上傳wallpaper engine了!
參考文章:
ffmpeg:碼率控制模式、編碼方式
ffmpeg實體,位元率碼率(-b)、幀率(-r)和檔案大小(-fs)相關操作
ffmpeg實作硬體轉碼(使用FFmpeg呼叫NVIDIA GPU實作H265轉碼H264)
閱讀3分 | ffmpeg無損轉換mp4到webm可不可行?為你揭曉答案
如何用FFmpeg將影像轉成H.265/HEVC格式?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337849.html
標籤:其他
