台球,关于视频的清晰度

作者 xtimz, 2022 六月 09, 22:33:38

« 上一篇主题 - 下一篇主题 »

xtimz

台球,那天在群里聊到视频的清晰度。我突然觉得我当时没反应过来,觉得还是有必要叫一下真。
简言之,你的问题在于没有用 Fraps,而用了 BandiCam。

我先要讲一下什么叫"Generation Loss"(不知怎么翻译,暂时翻译为"多次重复压缩造成的损失")。有的压缩算法,每一次压缩都会有一定的损失。比如一张清晰的图片 A0,用某一算法压缩成 A1,那么 A1 相对于 A0 就有了一定的画面损失。此时,再对 A1 压缩得到 A2,那么 A2 相对于 A1 就又有了一定的损失,于是 A2 相对于 A0 的损失就更大了。这就是"Generation Loss",多次重复压缩造成的损失。

有的算法 Generation Loss 不明显,但有的极其明显。比如:jpg 就极其明显,第一次压缩可能看不出什么,第二次压缩就立刻觉得不对劲了。你用的视频压缩算法 H264 也是这样,它对 Generation Loss 极其明显。你用 BandiCam 存盘时,它就用了 H264 压缩。然后你用"剪映"打开的就是已经经过一次 H264 压缩的视频,再由剪映存盘时,等于又用 H264 压缩了一遍。所以,你可能已经明显的看出了 Generation Loss,才觉得不对劲。

那么为什么要用 Fraps?最清晰的视频当然是完全无损的压缩,但那样太大了。假设完全无损的视频的大小是 1,Fraps 压缩完大约是 1/6 - 1/10,而 H264 压缩完则是 1/200 - 1/500。一分钱一分货,H264 再先进,它也比不了比它大 30 - 50 倍的 Fraps 视频。而且还有一点很重要的:视频有2种,一种是从现实世界录制的视频,另一种是电脑游戏生成的视频。这2种视频差别巨大:比如人一眼就能分辨出哪个是现实世界的,哪个是游戏中的,这就是其巨大差别导致的。Fraps 是专门录制电脑游戏生成的视频的,它的算法是专门针对这种视频的。而 H264 不是,H264 是通用的算法,它更多是为现实世界录制的视频的。所以我想说的就是,H264 再先进,它肯定不能在这个专门的领域里去和 Fraps 相比。

我的建议是这样,供你参考。
1。用 Fraps 录制视频,保留其原始格式。
2。用剪映打开 Fraps 原始格式的视频,所有的编辑都做完后,存盘导出。存盘导出时,产生了第一次、也是唯一一次的 H264 压缩。
3。等一切都做完后,删除 Fraps 的原始视频,因为它太大了。

我爱台球jh

我在群里回复你了,第一次知道论坛还有休闲话题讨论区 :thumbsup:

xtimz

台球,这是我完整的流程,供参考。先要到这里下载软件:
https://pan.baidu.com/s/1A9oyzY-w3PigfQCL0cI-8w?pwd=i81k(提取码:i81k)
下载那个Video Software.rar,里面有3个软件:Fraps、VirtualDub、WinFF。旁边还有一个Readme.html,就是这个贴子,也下载了吧。

我把Fraps放到里面了,因为我记得只有这个版本(3.4.7)好用,再往后反而不好用了,忘了为什么了。VirtualDub是负责裁剪视频的,只能裁剪Fraps格式的视频,不能裁剪H264的。WinFF其实就是ffmpeg,用来压缩的。我一直用1280x960,所以这也是根据1280x960调的。另外,这个WinFF是64位软件,我用的是64位的Win7。

总之,这是我个人的完整流程。要想用它,只能按我个人的步骤。也就是:把游戏调整为1280x960,用Fraps录制。当然,这只是一个参考。如果你想变一下也可以,只是我将大概率不知道怎么做。

Fraps就不说了,从VirtualDub说起,这个解压就能用,不用安装,直接运行VirtualDub.exe。

先把Fraps录制的视频重命名,命名为:1.avi、2.avi、3.avi、......、10.avi,假设我们有10个需要连接的视频。在VirtualDub里,先选择菜单:File -> Open video file,选择1.avi,打开第1个视频。再选择菜单:File -> Append AVI segment,选择2.avi,VirtualDub会自动将2.avi至10.avi依次连接。此时你可以看一下左下角的状态栏,那里写着"Append 9 segments (stopped at "11.avi")",意思就是连接了9个文件(2.avi到10.avi),没找到11.avi,于是停止了。

连接完了,该掐头去尾了。先移到开始点,然后选择菜单:Edit -> Set selection start,快捷键是Home。再移到结束点,选择菜单:Edit -> Set selection end,快捷键是End。这2个也可以通过屏幕下方的工具栏去做,你把鼠标放到工具栏图标上,稍等一会儿,如果提示"[Mark in]..."、"[Mark out]...",那就是这2个功能了。

然后就可以存盘了,存盘分2种:一种是无损的Fraps格式的存盘,另一种是为了H264压缩的存盘。先说Fraps格式的存盘。选择菜单:Video -> Direct stream copy,然后再检查一下菜单:Audio -> Direct stream copy。然后就可以存盘了,选择菜单:File -> Save as AVI,快捷键是F7。

再说为了H264压缩的存盘。选择菜单:Video -> Full processing mode,然后再检查一下菜单:Audio -> Direct stream copy。然后存盘,选择菜单:File -> Save as AVI,快捷键是F7,文件名一定要写a.avi。这里要解释2个问题,一是为什么不能使用Fraps原格式(Direct stream copy),而要用大了好几倍的完全无压缩的格式(Full processing mode)?ffmpeg压缩Fraps原格式时,色彩会有偏移,我也不知为什么,所以一定要选择Full processing mode。二是为什么文件名一定要选a.avi,不能选别的?这倒不关键,只是我压缩的脚本中假设了文件名是a.avi,如果是别的,那需要自己改脚本。

终于到压缩了。WinFF需要安装,前面说了,这是64位程序,我用的是64位的Win7。我不知道你怎么样,反正我每次都安装在"C:\Program Files\WinFF\ffmpeg.exe"之下,在这个路径下能找到ffmepg.exe。如果你安装到了"C:\Program Files (x86)\WinFF\ffmpeg.exe",那需要待会儿改一下脚本。在安装文件WinFF-1.5.4-Setup-3.exe同一目录下,有个a.bat,那个是我自己写的脚本,将它复制到a.avi所在的目录下。好了,现在如果你同时满足如下3个条件:

1。WinFF安装的位置正确,能找到C:\Program Files\WinFF\ffmpeg.exe。
2。视频是1280x960的。
3。视频的文件名是a.avi。

那么只需将a.bat复制到a.avi所在的目录,然后双击a.bat,就会完成一切。输出的文件a.mp4就是以10000kbps压缩的H264视频。

下面的东西你可以不看,但万一你想改一下脚本呢?所以我还是写出来。首先要解释2个问题,也是打一下预防针。一是你既然用ffmpeg,为什么不直接下载ffmpeg,而要下载WinFF这个外壳?因为ffmpeg极其复杂,我自己根本不知道怎么写,只能借助WinFF。二是你既然有了WinFF,为什么不直接用WinFF界面,而要写个脚本?WinFF极其不稳定,它不按我说的做,我好容易成功一次,赶紧把脚本抄下来。

更改脚本之前,我先要解释一下脚本文件a.bat。它其实就是个文本文件,任何文本编辑器都可以打开编辑,Windows自带的记事本就行。除了最后一行之外,脚本中有2行命令,都很长,而且有点儿相似。为什么是2行?因为我用了2-pass压缩,一共扫描视频2次:第一次先统计一下,哪儿的码率需要高一点,哪儿的码率可以低一点;然后第二次再正式压缩。所以如果改了第一行,那么第二行也要跟着改。

先说基本的。"C:\Program Files\WinFF\ffmpeg.exe"是WinFF安装的位置,如果你安装在了别处,那么需要改这个。-i "a.avi"是输入文件名,-i是input的缩写,如果你用别的文件名,那么改这个。

再说别的,虽然我极不建议你改别的,但是万一呢?-b:v 10000k是视频部分的比特率,-b:v是bitrate:video的缩写,我选择了10000k,这是我觉得最适合1280x960的,几乎肉眼看不出损伤的码率。-r:v 30是每秒30帧,-r是rate的缩写。唉,不说了,我也不懂。