最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

NVEnc/ffmpeg自用壓制命令

2023-01-12 01:13 作者:童年是個(gè)風(fēng)箏  | 我要投稿

前言-為什么要用NVEnc

之前在翻AC0這期視頻的時(shí)候曾經(jīng)用了ASS字幕來達(dá)到一些比較特殊的字幕效果(Arctime還是適合打比較普通的字幕),所以也被迫用了ffmpeg來壓制視頻。

但是眾所周知ffmpeg用的一般是CPU來進(jìn)行運(yùn)算,而我家里也沒有啥礦業(yè),于是在家里電腦的i5-6500(四核基頻3.20Ghz屬實(shí)很拉)上壓制的就特別慢。

當(dāng)時(shí)為了解決這個(gè)問題也是花了幾塊錢到騰訊云上臨時(shí)租賃了個(gè)32核64G內(nèi)存的云服務(wù)器,利用COS對象服務(wù)上行不收費(fèi)和同地域內(nèi)網(wǎng)上下載免費(fèi)的方式把視頻字幕和整個(gè)壓制軟件都放到服務(wù)器上跑,跑完了再上傳到COS下回來(這個(gè)要收費(fèi),但是因?yàn)槲沂抢嫌脩羲悦吭旅赓M(fèi)10G外網(wǎng)下行) 。

整體來說挺繁瑣的。而且即便性能相比我家里的小機(jī)器已經(jīng)是夢幻級別了,一次單獨(dú)壓制還是需要接近半個(gè)小時(shí);如果過程中發(fā)現(xiàn)字幕有誤還得重新來過,繼續(xù)花錢等著壓制完畢。。。所以我就想著有沒有什么更快的壓制字幕的方法。

AC0視頻出來之后,我在視頻下邊評論區(qū)講了下這次壓制的困難,同時(shí)跟各位推薦了個(gè)UP主“Barnett-Wong”。Barnett-Wong大佬后來也是來下邊評論了,然后我就順便問了下有沒有什么快速壓制的工具,于是他就給我推了今天這個(gè)主角,NVEnc。

NVIDIA確實(shí)支持,但是……

我覺得大部分人的情況都是這樣:沒有一臺專門的幾十核的服務(wù)器擺在旁邊給你壓制,手上卻有一張比較高端的游戲顯卡(并且假設(shè)你還是N家的)。那有沒有可能我們能不用CPU壓制,而用游戲卡上的硬件解編碼引擎來壓制呢?更簡單的話來說,有沒有可能硬件加速?

確實(shí)可以。NVIDIA家實(shí)際上是開放了硬件解編碼器的SDK的,所以這就讓OBS和Action!之類的一些第三方錄屏軟件可以采用更省力更高效的硬件編碼。事實(shí)上,NVIDIA還專門有一個(gè)文檔就是教你怎么用ffmpeg進(jìn)行硬件加速的。(https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/)

但是這個(gè)方法不是所有人的適用的。比方說我就先后遇到了

  • Impossible to convert between the formats supported by the filter 'graph 0 input from stream 0:0' and the filter 'auto_scale_0'

  • Failed using scale_npp ffmpeg filter

兩個(gè)錯(cuò)誤。第一個(gè)錯(cuò)誤看StackOverflow上的一個(gè)帖子是能規(guī)避了,但是規(guī)避完之后就出現(xiàn)了第二個(gè)錯(cuò)誤,并且看了下感覺是需要自己從頭編譯ffmpeg的(順便一提,NVIDIA那篇文檔確實(shí)是列出了編譯的步驟的)……

雖然如今在Windows上配置編譯環(huán)境可能已經(jīng)沒有以前那么困難了,但是還是很麻煩。

當(dāng)某件事很麻煩(實(shí)際上是極其麻煩)的時(shí)候,我就不想干了。

不如給NVEnc一個(gè)機(jī)會。

NVEnc命令詳解

項(xiàng)目地址:https://github.com/rigaya/NVEnc

第一感覺是:ffmpeg,但是NVIDIA硬件加速版。

所以ffmpeg的命令可以通用……吧?

實(shí)際上還真不太能。NVEnc雖然有用到ffmpeg的部分,且部分參數(shù)看起來也和ffmpeg很像,但是一些控制參數(shù),例如碼率、字幕等等都是不一樣的。如果傳進(jìn)了不支持或不存在的參數(shù),NVEnc會直接退出,拒絕運(yùn)行。

所以我花了大概40分鐘啃了下文檔,大概根據(jù)自己的實(shí)際需要整合出了這么一道命令:

NVEncC64.exe --vpp-subburn filename=".\GamesSchools_zhcn.ass",shaping=complex --perf-monitor all --profile high -c "h264" --audio-copy --max-bitrate 3000 -i ".\Games, Schools, and Worlds Designed for Violence.mp4" -o '.\GamesSchools_zhcn.mp4'

各個(gè)參數(shù)解釋如下(其實(shí)項(xiàng)目文檔里就有):

  • --vpp-subburn:指明要把字幕燒刻進(jìn)視頻里(非外掛字幕)。filename后跟字幕文件位置,shaping=complex指明字幕為復(fù)雜渲染方式。

  • --perf-monitor all:可以去掉。這個(gè)只是告訴它記錄性能參數(shù)罷了,會略微影響編碼性能。好奇的可以保留。

  • --profile:指定編碼器配置(profile)。H264一般常用“main”或“high”,這里我選了后者。

  • -c:指定編碼器。可選“h264”和“hevc”(即H265)。H265疑似只能搞一條軌道,加了字幕是燒錄不上去的(會報(bào)錯(cuò)),要用H264。

  • --audio-copy:指明要復(fù)制輸入源里的音頻。必須加上,否則輸出的視頻沒聲音。

  • --max-bitrate:指定最大碼率,后跟碼率(kbps)。這個(gè)可以不加

  • -i:指定輸入文件,后跟文件路徑。

  • -o:指定輸出文件,后跟文件路徑

ffmpeg命令詳解

順便放一下我用的ffmpeg命令

.\ffmpeg.exe -i "input.mp4"-c:v libx264 -crf 28 -preset slow -c:a copy -vf "ass=sub.ass" -o .\out.mp4

各個(gè)參數(shù)解釋如下:

  • -i:指定輸入文件,后跟文件路徑。

  • -c:v:指定視頻的編碼器。一般為“l(fā)ibx264”(H264)和“l(fā)ibx265”(H265)。

  • -crf:Constant Rate Factor,大概就是決定畫面質(zhì)量的東西,越大畫面質(zhì)量越垃圾。建議值25~28

  • -perset:輸出預(yù)設(shè)。一般為“slow”或“fast”越慢視頻能更好壓縮,節(jié)約空間

  • -c:a:指定音頻編碼器。一般為“copy”,即復(fù)制音頻流(不轉(zhuǎn)換)。

  • -vf:燒錄字幕的相關(guān)參數(shù)。ASS字幕需要這么寫(包括英文雙引號):"ass=文件路徑"。

  • -o:指定輸出文件,后跟文件路徑

差不多就這樣吧。

關(guān)于輸出(只針對本視頻)

文件大?。簳蛎浺恍?,原因不明。

原視頻304MB,輸出為730MB。加了最大碼率限制沒用。

所需時(shí)間:大概只需要原來的10%左右的時(shí)間。

這個(gè)視頻導(dǎo)出平均在一分半左右。按照常規(guī)壓制流程可能需要30分鐘左右(預(yù)設(shè)slow,crf 29)。

總結(jié)

比ffmpeg快,就是稍微有點(diǎn)折騰(指啃了命令性參數(shù)文檔將近四十分鐘)。

但是一旦能用了那就是真的快到飛起。


另外有任何錯(cuò)誤歡迎指出。


NVEnc/ffmpeg自用壓制命令的評論 (共 條)

分享到微博請遵守國家法律
中西区| 华安县| 郴州市| 廉江市| 邯郸市| 响水县| 浦东新区| 孙吴县| 五峰| 富平县| 通渭县| 绵竹市| 吴旗县| 娱乐| 双辽市| 沈丘县| 图木舒克市| 肇庆市| 石棉县| 澄城县| 策勒县| 沙洋县| 峡江县| 德庆县| 六盘水市| 德昌县| 穆棱市| 阿鲁科尔沁旗| 桓台县| 华坪县| 泸水县| 临汾市| 云南省| 上栗县| 五常市| 东乡族自治县| 饶阳县| 德兴市| 库车县| 蒙阴县| 阳江市|