rufeel
帖子: 4
注册时间: 2016-11-14 17:35

求助 弹幕游戏视频应该如何压制

最近录了一些东方project弹幕游戏的视频,不太清楚怎么压好,我也找了一些资料,但好像试来试去也没有特别大的差别。各位有相关经验的话求指教。原片是60FPS的,无损RGB色彩。我用的是ffmpeg + x264-8bit,一般是使用-profile:v high -level 4.1 -pix_fmt yuv420p -preset veryslow,配合-crf控制码率,其他参数基本不改。上传B站,要求是码率不超过1.8Mbps。

一些具体的疑问:
1、-tune touhou 选项
[Codebox=]
else if( !strncasecmp( s, "touhou", 6 ) )
{
if( psy_tuning_used++ ) goto psy_failure;
param->i_frame_reference = param->i_frame_reference > 1 ? param->i_frame_reference*2 : 1;
param->i_deblocking_filter_alphac0 = -1;
param->i_deblocking_filter_beta = -1;
param->analyse.f_psy_trellis = 0.2;
param->rc.f_aq_strength = 1.3;
if( param->analyse.inter & X264_ANALYSE_PSUB16x16 )
param->analyse.inter |= X264_ANALYSE_PSUB8x8;
}
[/Codebox]
这个预置选项把aq-strength设置为1.3,是所有预置选项中最高的,deblocking设置为-1:-1,如果我理解的没错的话,这套参数倾向于把高速运动的弹幕部分的码率降下来,并尽量优化平滑区域的视觉效果。但弹幕游戏视频看得更多是弹幕啊,平滑的那些地方很清楚也不是很重要的感觉。是否用默认参数压制或者-tune animation / grain之类的更好?

2、crf和cqp
以我看到的资料来看crf更倾向分配更多的码率给静止区域,而cqp固定量化质量。同样的原因,如果倾向让人看弹幕看得更清楚的话,是否用cqp压制会更好一些?我用cqp压了几个,和crf相同码率的情况下,平滑区域的画质确实会差,但弹幕部分看起来好像只有很小的提升,而且不排除是我心理作用。

3、分辨率
更大的分辨率需要压的画质更差一些才能达到预定的码率要求,低分辨率则可以要求画质高一些,但如果不同分辨率的视频压制到相同的码率再放大到同样大小的全屏播放的话,哪种更好一些?
比较明显的差别是低分辨率会对比较细小的文字有比较大的影响,低分辨率即便是原片,有些字也不是很清楚。但高分辨率的视频,字确实很清楚,但看起来弹幕本身就是被拉抻过的,圆形的边缘会有比较明显的一块一块的。不过比较重要的还是弹幕本身。

4、是否有其他针对弹幕游戏视频的参数,效果特别明显的,可以调的?

5、是否应该更关注弹幕本身的质量?码率分配给高速弹幕是否值得?

回答问题提前感谢
netsky123
帖子: 53
注册时间: 2015-01-26 14:18

Re: 求助 弹幕游戏视频应该如何压制

x264自带--tune touhou,只是没写在help里。
rufeel
帖子: 4
注册时间: 2016-11-14 17:35

Re: 求助 弹幕游戏视频应该如何压制

netsky123 写了:x264自带--tune touhou,只是没写在help里。
这我知道,而且我也写在问题里了。但这个选项中的参数看起来并不适合压弹幕视频。
netsky123
帖子: 53
注册时间: 2015-01-26 14:18

Re: 求助 弹幕游戏视频应该如何压制

rufeel 写了:
netsky123 写了:x264自带--tune touhou,只是没写在help里。
这我知道,而且我也写在问题里了。但这个选项中的参数看起来并不适合压弹幕视频。
那么为什么它会叫touhou呢
in4ight
帖子: 8
注册时间: 2015-11-21 14:38

Re: 求助 弹幕游戏视频应该如何压制

楼主似乎认为高速运动的像素比静止像素更影响视觉效果,其实恰恰相反。静止的画面一堆色块一眼就能看出来,高速运动的弹幕其瑕疵也在高速运动,人反而看的不清楚。换言之,对于人眼观感,静止画面所需的crf比动态画面要低。

而楼主需要上传在线视频,还有码率要求。高动态细节对于码率的需求又是很大,同样扔200kbps进去,可能一眼都看不出好坏,但是用来提升静态画面往往就是一眼的差距。

我个人对于压制此类视频的一些见解:
aq-strength 给高,1.3是个完全没问题的参数,aq-mode建议3(适合动画)
psy-rd 0:0 提升第一个数值在同crf下会极大地增加码率

另外aq好像不涉及帧间压缩吧,其用处是平衡一帧中平滑区域和高细节区域的码率分配,aq-strength越高,越倾向于增加平滑区域的质量并下降高细节区域的质量。
rufeel
帖子: 4
注册时间: 2016-11-14 17:35

Re: 求助 弹幕游戏视频应该如何压制

netsky123 写了:
rufeel 写了:
netsky123 写了:x264自带--tune touhou,只是没写在help里。
这我知道,而且我也写在问题里了。但这个选项中的参数看起来并不适合压弹幕视频。
那么为什么它会叫touhou呢

我不觉得应该完全以“这是专家说的,所以就好“来揣测,代码都写了,我们逐个分析里面的参数就是,而且其实我的问题问的很具体,你这样笼统的解答并不能解决我的问题。
这套参数我在2010年的帖子里就见过,而且当时的帖子就说“这套参数确实还在代码里有但是文档里没了”,何况这么多年过去了?
东方新作第一作可是2002年出的,画面只有640x480,图像上的特效也很简单,最近出的几作画面都支持1280*960,即便这套参数是某某年某某专家调出来的经验值,针对近几年的新作合适不合适也是值得讨论的。
rufeel
帖子: 4
注册时间: 2016-11-14 17:35

Re: 求助 弹幕游戏视频应该如何压制

in4ight 写了:楼主似乎认为高速运动的像素比静止像素更影响视觉效果,其实恰恰相反。静止的画面一堆色块一眼就能看出来,高速运动的弹幕其瑕疵也在高速运动,人反而看的不清楚。换言之,对于人眼观感,静止画面所需的crf比动态画面要低。

而楼主需要上传在线视频,还有码率要求。高动态细节对于码率的需求又是很大,同样扔200kbps进去,可能一眼都看不出好坏,但是用来提升静态画面往往就是一眼的差距。

我个人对于压制此类视频的一些见解:
aq-strength 给高,1.3是个完全没问题的参数,aq-mode建议3(适合动画)
psy-rd 0:0 提升第一个数值在同crf下会极大地增加码率

另外aq好像不涉及帧间压缩吧,其用处是平衡一帧中平滑区域和高细节区域的码率分配,aq-strength越高,越倾向于增加平滑区域的质量并下降高细节区域的质量。


非常感谢你回复,提供了很多信息。

aq-mode我以前用的都是各个tune的默认值,好像一般都是012的,我会改成3试一试。

psy的问题我并没有特意调整过,但我试过-tune ssim,会默认把psy设置成0,但在mediainfo里面并看不到psy-rd=1.00:0.00的字样(没有tune或者tune touhou会有),码率相同的情况下crf也可以降低两个点的样子。如果停在某一帧对比的话,-tune ssim会有一定的模糊,但同码率下其他tune或者不tune,不模糊的部分会有视觉明显的压制产生的噪点。也许用高分辨率录制(弹幕图像部分看起来像是低分直接紧邻插值拉上去的,记分板倒是很清晰),再压出模糊一点的效果,也许比低分辨率录制压出噪点再通过双线性扩展到全屏(播放时)的效果要好一些。
in4ight
帖子: 8
注册时间: 2015-11-21 14:38

Re: 求助 弹幕游戏视频应该如何压制

rufeel 写了:
in4ight 写了:楼主似乎认为高速运动的像素比静止像素更影响视觉效果,其实恰恰相反。静止的画面一堆色块一眼就能看出来,高速运动的弹幕其瑕疵也在高速运动,人反而看的不清楚。换言之,对于人眼观感,静止画面所需的crf比动态画面要低。

而楼主需要上传在线视频,还有码率要求。高动态细节对于码率的需求又是很大,同样扔200kbps进去,可能一眼都看不出好坏,但是用来提升静态画面往往就是一眼的差距。

我个人对于压制此类视频的一些见解:
aq-strength 给高,1.3是个完全没问题的参数,aq-mode建议3(适合动画)
psy-rd 0:0 提升第一个数值在同crf下会极大地增加码率

另外aq好像不涉及帧间压缩吧,其用处是平衡一帧中平滑区域和高细节区域的码率分配,aq-strength越高,越倾向于增加平滑区域的质量并下降高细节区域的质量。


非常感谢你回复,提供了很多信息。

aq-mode我以前用的都是各个tune的默认值,好像一般都是012的,我会改成3试一试。

psy的问题我并没有特意调整过,但我试过-tune ssim,会默认把psy设置成0,但在mediainfo里面并看不到psy-rd=1.00:0.00的字样(没有tune或者tune touhou会有),码率相同的情况下crf也可以降低两个点的样子。如果停在某一帧对比的话,-tune ssim会有一定的模糊,但同码率下其他tune或者不tune,不模糊的部分会有视觉明显的压制产生的噪点。也许用高分辨率录制(弹幕图像部分看起来像是低分直接紧邻插值拉上去的,记分板倒是很清晰),再压出模糊一点的效果,也许比低分辨率录制压出噪点再通过双线性扩展到全屏(播放时)的效果要好一些。
关于psy-rd开了为什么会有噪点,我说一下我的理解:由于码率、质量等因素的限制,画面中的纹理、线条等高频信息必然会丢失,丢失的太多,人眼就会觉得不清楚。那么,针对这样的问题,x264给出的解决方案是在丢失信息的部分人为加上合适的高频信息以达到针对视频的视觉心理优化,通俗地说就是加噪点提升观感。psy-rd的第一个参数越高,这种所谓的优化强度就越大。

这种机制对于摄像机录制的视频可能是有用的,但是不知为何对显卡渲染的游戏录制视频来说,是码率的浪费。所以建议还是设置为0。参考我之前发的一个提问帖里面的回答:viewtopic.php?f=8&t=1807&p=13430#p13430

另外,建议还是用游戏的原生分辨率去录制,不然弹幕通过NN(最近邻)插值放大之后就比较难处理。不如先低分录制,再通过一些变态(很慢)的算法来放大。
LYM2002
帖子: 2
注册时间: 2018-06-16 23:28

Re: 求助 弹幕游戏视频应该如何压制

你觉得https://pan.baidu.com/s/1bIeeR0里面的TH10S6怎样?
我随便压的,没怎么调参数,不知道会不会被B站二压.

回到 “视频编码器 / Video encoder discussion”