Closed ddd-zero closed 1 year ago
上次提交了一个强制弹幕渲染帧率为60的issues,今天拉取了新代码测试2个小时前的‘2a3b37d’
测试地址为,小米直播间。直播间一直在循环宣传片,推出来的流为60帧。https://live.bilibili.com/545342
①当配置文件为默认配置,即
advanced_render_args: ~
首先录出来的原始视频是正常60帧,渲染出来的带弹幕版视频也是60帧,但弹幕看着非常卡,很明显是30帧的弹幕。理论上视频是60帧渲染出来的弹幕应该也是60帧,没搞明白为啥会这样。
②用和①相同的配置,仅更改视频直播地址为 英雄联盟 笑笑的直播间 https://live.bilibili.com/7777 ,相同的配置弹幕又是以60帧的帧率渲染的。 这是我没搞明白的。
③我又回去继续测试小米直播间的。
advanced_render_args: # 指定输出帧率。此选项不同于'-r',这里的帧率将直接作用在video filter上,默认保持原视频帧率 fps: 60
加上高级参数,指定强制渲染60帧弹幕。发现结果与①依旧一样。手动尝试直接用render only 直接渲染。日志中显示参数是有的,但出来的视频还是和①一样,弹幕只有30
{'src': 'render', 'msg': './直播回放(带弹幕版)\\[正在录制] xiaomi-20231026-154217-Part000(带弹幕版).mp4', 'type': 'info', 'group': None, 'desc': '', 'msg_type': 'render', 'video': './直播回放\\[正在录制] xiaomi-20231026-154217-Part000.flv', 'danmaku': './直播回放\\[正在录制] xiaomi-20231026-154217-Part000.ass', 'output': './直播回放 (带弹幕版)\\[正在录制] xiaomi-20231026-154217-Part000(带弹幕版).mp4', 'video_info': None, 'config': {'output_dir': None, 'format': 'mp4', 'engine': 'ffmpeg', 'hwaccel_args': ['-hwaccel', 'dxva2'], 'vencoder': 'h264_qsv', 'vencoder_args': ['-profile:v', 'high', '-global_quality:v', 26, '-look_ahead', 0, '-g', 600, '-low_power', False, '-preset', 'slow', '-scenario', 'archive'], 'aencoder': 'aac', 'aencoder_args': ['-b:a', '320K'], 'output_resize': 1.5, 'advanced_render_args': {'fps': 60}, 'nproc': 2, 'bufsize': 100, 'danmaku_resort': False}, 'kwargs': {}} [2023-10-26 15:46:09,609][INFO]: 正在渲染: ./直播回放\[正在录制] xiaomi-20231026-154217-Part001.flv {'src': 'render', 'msg': './直播回放(带弹幕版)\\[正在录制] xiaomi-20231026-154128-Part001(带弹幕版).mp4', 'type': 'info', 'group': None, 'desc': '', 'msg_type': 'render', 'video': './直播回放\\[正在录制] xiaomi-20231026-154128-Part001.flv', 'danmaku': './直播回放\\[正在录制] xiaomi-20231026-154128-Part001.ass', 'output': './直播回放 (带弹幕版)\\[正在录制] xiaomi-20231026-154128-Part001(带弹幕版).mp4', 'video_info': None, 'config': {'output_dir': None, 'format': 'mp4', 'engine': 'ffmpeg', 'hwaccel_args': ['-hwaccel', 'dxva2'], 'vencoder': 'h264_qsv', 'vencoder_args': ['-profile:v', 'high', '-global_quality:v', 26, '-look_ahead', 0, '-g', 600, '-low_power', False, '-preset', 'slow', '-scenario', 'archive'], 'aencoder': 'aac', 'aencoder_args': ['-b:a', '320K'], 'output_resize': 1.5, 'advanced_render_args': {'fps': 60}, 'nproc': 2, 'bufsize': 100, 'danmaku_resort': False}, 'kwargs': {}}
④我看下面还有一个filter_complex,于是使用filter_complex测试
advanced_render_args: filter_complex: 'fps=fps=60,subtitles=filename={DANMAKU}'
这样出来的弹幕就正常了。
直播回放.zip 渲染后part1.zip 渲染后part2.zip
也许是vf参数和filter complex参数的区别?如果单纯指定fps的话用的是单个vf而不是filter complex,也许是这里的区别。
这个我也不太懂。要不把 fps: 60 删了吧。有需求的直接自己写filter_complex
120
上次提交了一个强制弹幕渲染帧率为60的issues,今天拉取了新代码测试2个小时前的‘2a3b37d’
测试地址为,小米直播间。直播间一直在循环宣传片,推出来的流为60帧。https://live.bilibili.com/545342
①当配置文件为默认配置,即
首先录出来的原始视频是正常60帧,渲染出来的带弹幕版视频也是60帧,但弹幕看着非常卡,很明显是30帧的弹幕。理论上视频是60帧渲染出来的弹幕应该也是60帧,没搞明白为啥会这样。
②用和①相同的配置,仅更改视频直播地址为 英雄联盟 笑笑的直播间 https://live.bilibili.com/7777 ,相同的配置弹幕又是以60帧的帧率渲染的。 这是我没搞明白的。
③我又回去继续测试小米直播间的。
加上高级参数,指定强制渲染60帧弹幕。发现结果与①依旧一样。手动尝试直接用render only 直接渲染。日志中显示参数是有的,但出来的视频还是和①一样,弹幕只有30
④我看下面还有一个filter_complex,于是使用filter_complex测试
这样出来的弹幕就正常了。