在Linux系统下学习字幕制作和视频压制
背景
up主最近在瞎折腾视频切片和加字幕,为了做视频,特地给工作用的电脑装上了windows,变成了双系统,装的过程中还遇到了不少问题,甚至还把linux的grub引导的配置给搞坏了,花了不少时间修复。
在windows下面,我是使用的pr添加字幕和压制视频,然而,对于初学者来说十分不友好,我花了三个小时的时间,才成功切了一首歌并添加上了字幕,渲染也是十分的耗时。我当时使用的电脑配置如下:
Intel i5-1035G7/Nvidia MX350/16G (这是另一台非工作用的娱乐电脑)
渲染不到五分钟的视频,耗时20分钟,而且离谱的是使用cpu和使用gpu耗时居然没有差别!大概是我哪里配置不对吧。
我在windows下面做出了第一个歌回切片:【扇宝】小夜子
后来在好友 冰菓°C 的推荐下使用了 Arctime,这货居然是java编写的,也就意味着能跑在我的linux系统上,我也就萌生了在linux下做视频的想法了,我也就不用费时费力双系统切来切去了。
我工作用的电脑配置如下:
Intel i7-10750H/Nvidia GTX 1650 Ti Mobile/32G
Arctime对linux的支持
arctime虽然号称是java编写的跨平台软件,但我估计作者只在少数几个发行版或者桌面环境下测试过,其在linux下存在以下问题:
不支持高分屏,我的工作用电脑是 xps15-9500,4k分辨率,打开后界面字体非常小。
不支持awesome wm(没有测试i3)和xfce4默认的桌面环境。我大概分析了一下原因,是arctime的开发者使用了偷懒或者投机取巧的方式开发了某些弹出框,这些弹出框被awesome识别为新窗口导致了焦点变化。
其中1问题我查阅了arch的wiki,尝试了不少方法都无解,我从java8升级到java11,直接无法启动了......后来我抱着试一试的心态下载了java9,居然可以了!解决方式是设置环境变量 GDK_SCALE=2。
第2个问题由于我根本不懂awesome配置以及lua脚本,暂时无解,我只能临时切换到openbox下去使用arctime了。
视频编辑工具的选择
我尝试了各种视频编辑软件(openshot、shotcut、Cinelerra、kdenlive、lightworks等),要么是不支持字幕,要么是不支持高分辨率,都被我放弃了。
我再分析了一下我的需求,只有分割视频以及添加字幕,那么使用ffmpeg足够了!唯一不方便之处是 ffmpeg只能使用命令行了,这也不是问题,我是十几年的老linux用户了。
分割视频的命令如下:
ffmpeg -i input.mp4 -ss 120 -t 240 -c copy output.mp4
其中,-ss参数是开始时间,-t参数是长度,单位都是秒
字幕编辑工具的选择
前文有提到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卡来渲染,我没有具体了解每一个参数的意思,有兴趣的同学可以自行谷歌。
我直接使用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