在Linux系統(tǒng)下學習字幕制作和視頻壓制
背景
up主最近在瞎折騰視頻切片和加字幕,為了做視頻,特地給工作用的電腦裝上了windows,變成了雙系統(tǒng),裝的過程中還遇到了不少問題,甚至還把linux的grub引導(dǎo)的配置給搞壞了,花了不少時間修復(fù)。
在windows下面,我是使用的pr添加字幕和壓制視頻,然而,對于初學者來說十分不友好,我花了三個小時的時間,才成功切了一首歌并添加上了字幕,渲染也是十分的耗時。我當時使用的電腦配置如下:
Intel i5-1035G7/Nvidia MX350/16G (這是另一臺非工作用的娛樂電腦)
渲染不到五分鐘的視頻,耗時20分鐘,而且離譜的是使用cpu和使用gpu耗時居然沒有差別!大概是我哪里配置不對吧。
我在windows下面做出了第一個歌回切片:【扇寶】小夜子
后來在好友?冰菓°C?的推薦下使用了 Arctime,這貨居然是java編寫的,也就意味著能跑在我的linux系統(tǒng)上,我也就萌生了在linux下做視頻的想法了,我也就不用費時費力雙系統(tǒng)切來切去了。
我工作用的電腦配置如下:
Intel i7-10750H/Nvidia GTX?1650 Ti Mobile/32G
Arctime對linux的支持
arctime雖然號稱是java編寫的跨平臺軟件,但我估計作者只在少數(shù)幾個發(fā)行版或者桌面環(huán)境下測試過,其在linux下存在以下問題:
不支持高分屏,我的工作用電腦是 xps15-9500,4k分辨率,打開后界面字體非常小。
不支持awesome wm(沒有測試i3)和xfce4默認的桌面環(huán)境。我大概分析了一下原因,是arctime的開發(fā)者使用了偷懶或者投機取巧的方式開發(fā)了某些彈出框,這些彈出框被awesome識別為新窗口導(dǎo)致了焦點變化。
其中1問題我查閱了arch的wiki,嘗試了不少方法都無解,我從java8升級到j(luò)ava11,直接無法啟動了......后來我抱著試一試的心態(tài)下載了java9,居然可以了!解決方式是設(shè)置環(huán)境變量 GDK_SCALE=2。
第2個問題由于我根本不懂a(chǎn)wesome配置以及l(fā)ua腳本,暫時無解,我只能臨時切換到openbox下去使用arctime了。
視頻編輯工具的選擇
我嘗試了各種視頻編輯軟件(openshot、shotcut、Cinelerra、kdenlive、lightworks等),要么是不支持字幕,要么是不支持高分辨率,都被我放棄了。
我再分析了一下我的需求,只有分割視頻以及添加字幕,那么使用ffmpeg足夠了!唯一不方便之處是 ffmpeg只能使用命令行了,這也不是問題,我是十幾年的老linux用戶了。
分割視頻的命令如下:
ffmpeg -i input.mp4?-ss 120? -t 240?-c copy output.mp4
其中,-ss參數(shù)是開始時間,-t參數(shù)是長度,單位都是秒
字幕編輯工具的選擇
前文有提到arctime這個字幕編輯工具,很好用!它還集成了視頻壓制的功能,我后來的幾個歌回切片都是使用它制作字幕并壓制的:
使用ffmpeg整合字幕文件和視頻文件
arctime的壓制使用的是cpu,速度很慢!如果要使用gpu的話,需要自己使用ffmpeg命令了。
將字幕和視頻文件渲染在一起的命令如下:
ffmpeg -i input.mp4 -vf "ass=zimu.ass"? -c:a copy?-c:v h264_nvenc -b:v 5M??output.mp4?
其中?-c:v h264_nvenc -b:v 5M?大概是使用n卡來渲染,我沒有具體了解每一個參數(shù)的意思,有興趣的同學可以自行谷歌。
我直接使用ffmpeg壓制的視頻:
參考資料
https://wiki.archlinux.org/index.php/HiDPI_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://developer.nvidia.com/zh-cn/blog/nvidia-ffmpeg-transcoding-guide/
https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/
https://unix.stackexchange.com/questions/1670/how-can-i-use-ffmpeg-to-split-mpeg-video-into-10-minute-chunks