SmallPeaches / DanmakuRender

一个可以录制带弹幕直播流的小工具
264 stars 33 forks source link

能否自定义渲染字幕帧率,自定义无弹幕视频保存帧率码率 #193

Closed natgeoo closed 2 months ago

natgeoo commented 4 months ago

带弹幕和无弹幕视频对比,部分渲染出来的视频帧率高达 44,抖音原始直播流只有十几帧,能否自定义调整来节省空间时间 DB4D7422-6515-4B2C-93E0-36024888F46C 59062C09-273E-4ED8-B7DC-35CC80A3F84C

SmallPeaches commented 4 months ago

无弹幕视频是和浏览器看的视频一模一样的,这个码率帧率改不了(当然你可以通过改ffmpeg输出参数改封装帧率,但是实际的内容帧率是改不了的)。 弹幕视频的渲染帧率码率你直接改编码器参数或者filter complex就行,可以参考(#147)。

natgeoo commented 4 months ago

无弹幕视频是和浏览器看的视频一模一样的,这个码率帧率改不了(当然你可以通过改ffmpeg输出参数改封装帧率,但是实际的内容帧率是改不了的)。 弹幕视频的渲染帧率码率你直接改编码器参数或者filter complex就行,可以参考(#147)。

感谢回复,参考(#147)中别人写好的: advanced_render_args: filter_complex: 'fps=fps=60,subtitles=filename={DANMAKU}' 我是否可以简单把60改成20达到指定渲染帧率?后面的subtitles=filename={DANMAKU}是否需要添加?我是添加到replay.yml还是config里每个主播单独添加

SmallPeaches commented 4 months ago

subtitles=filename={DANMAKU}需要添加,添加到replay.yml里面的渲染参数那里就可以了。 不过特别提醒的是20fps的话弹幕会非常卡顿,看起来的效果和浏览器看差距会很大,如果希望空间小一点最好是直接把码率改低。

natgeoo commented 4 months ago

subtitles=filename={DANMAKU}需要添加,添加到replay.yml里面的渲染参数那里就可以了。 不过特别提醒的是20fps的话弹幕会非常卡顿,看起来的效果和浏览器看差距会很大,如果希望空间小一点最好是直接把码率改低。

经过我手机录屏测试,同为1m码率下480p 720p 1080p不同分辨率录屏有明显视觉差距,原始直播流分辨率是720x1280,渲染出来也是如此,我以下写的是重缩放到1080p的参数是否正确 output_resize: ~ 1080x1920 重缩放是否会影响渲染速度?

SmallPeaches commented 4 months ago

现在推荐直接写倍数,比如说output_resize: 1.5(720P的1.5倍正好是1080P) 重缩放会影响渲染速度,渲染速度和缩放倍速是平方关系,一般来说1.5倍放大就要花2.25倍时间。

natgeoo commented 4 months ago

现在推荐直接写倍数,比如说output_resize: 1.5(720P的1.5倍正好是1080P) 重缩放会影响渲染速度,渲染速度和缩放倍速是平方关系,一般来说1.5倍放大就要花2.25倍时间。

感谢解答,还有什么方法可以提高渲染速度?我使用1050显卡的nvenc h.264编码器,1m码率下,平均渲染速度至少要花费原视频时长的四分之一时间

SmallPeaches commented 4 months ago

编码器参数加个-profile fast,至于码率的话调高一点对速度没什么影响,但是能把观看体验提高很多。 另外原视频1/4时间已经算比较快的了,我3060一般是1/6时间。

natgeoo commented 4 months ago

Owner

添加
advanced_render_args: filter_complex: 'fps=fps=20,subtitles=filename={DANMAKU}' 报错 Unable to parse option value "/Downloads/DanmakuRender-2024.1.30/梵谷/2/梵谷(良心版)-02月22日20点31分.ass" as image size Error applying option 'original_size' to filter 'subtitles': Invalid argument Failed to set value 'fps=fps=20,subtitles=filename=F\:/Downloads/DanmakuRender-2024.1.30/梵谷/2/梵谷(良心版)-02月22日20点31分.ass' for option 'filter_complex': Invalid argument Error parsing global options: Invalid argument b0ca42ade09f8ac7199a97006764148 如何解决?

SmallPeaches commented 4 months ago

你试试filter_complex: fps=fps=20,subtitles=filename='{DANMAKU}'?

natgeoo commented 4 months ago

你试试filter_complex: fps=fps=20,subtitles=filename='{DANMAKU}'?

测试成功,感谢作者耐心解答

natgeoo commented 4 months ago

-profile fast

我在replay.yml中这样修改配置是否正确

vencoder_args: [-b:v, 0.8M]
  -profile fast 

还是 vencoder_args: [-b:v, 0.8M, -profile fast]

刚刚重新阅读使用文档,貌似不能加入不在可用选项的命令,是否-preset fast这个参数就无法使用了

SmallPeaches commented 4 months ago

我在replay.yml中这样修改配置是否正确

vencoder_args: [-b:v, 0.8M]
  -profile fast 

还是 vencoder_args: [-b:v, 0.8M, -profile fast]

刚刚重新阅读使用文档,貌似不能加入不在可用选项的命令,是否-preset fast这个参数就无法使用了

vencoder_args: [-b:v, 0.8M, -profile, fast],这些参数实际上是直接输入ffmpeg的,只要是ffmpeg支持的参数都可以使用。

natgeoo commented 4 months ago

我在replay.yml中这样修改配置是否正确

vencoder_args: [-b:v, 0.8M]
  -profile fast 

还是 vencoder_args: [-b:v, 0.8M, -profile fast] 刚刚重新阅读使用文档,貌似不能加入不在可用选项的命令,是否-preset fast这个参数就无法使用了

vencoder_args: [-b:v, 0.8M, -profile, fast],这些参数实际上是直接输入ffmpeg的,只要是ffmpeg支持的参数都可以使用。

使用vencoder_args: [-b:v, 0.8M, -preset, p1]测试成功感谢作者指导。 使用 h264_nvenc 接受的最快编码速度(质量最低)参数p1和p7最慢(质量最高)对比,视觉无法分辨差距,编码速度有1x左右改变。 我设置的0.8m码率,视觉画质接近浏览器,从1.2m码率调低到0.8m有0.3x速度提升