SmallPeaches / DanmakuRender

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

有人汇报过弹幕重复的情况吗? #121

Closed ddd-zero closed 1 year ago

ddd-zero commented 1 year ago

FFmpeg录制,录的B站。录出来的弹幕有很多重复的。应该不是复读机 image

ddd-zero commented 1 year ago

还有弹幕重叠现象

image

https://github.com/SmallPeaches/DanmakuRender/assets/57771987/625f0446-c15e-4c28-b4c5-89bd1c894aa4

ddd-zero commented 1 year ago
# 录制文件名称格式,可使用关键字替换,默认效果:飞天狙想要努力变胖-2023年3月1日20点30分,注意这里不能含有冒号,斜杠等非法字符!!
output_name: '{STREAMER}-{YEAR}年{MONTH}月{DAY}日{HOUR}点{MINUTE}分'

# 录制程序引擎,可选ffmpeg(由ffmpeg提供拉流服务)或者streamgears(使用streamgears提供拉流服务,此功能正在测试)
# 在使用streamgears作为录制引擎时,录制视频格式只能是flv
engine: ffmpeg

# 录播分段时间(秒),默认一个小时
segment: 3600

# 是否录制弹幕
danmaku: True

# 是否录制直播流
video: True

# 启动自动渲染
auto_render: True

# 延迟下播计时(分钟)
# 使用这个功能可以把主播短暂下播又开播认定为同一场直播
end_cnt: 5

# 默认分辨率,如果程序无法正常判断流的分辨率可以使用以下参数强行指定
resolution: [1920,1080]

# 录制视频的格式,默认flv
# 使用streamgears作为录制引擎应该使用flv
vid_format: flv

# 直播流CDN选项
# 对于虎牙直播,此项可选al, tx, hw等cdn服务器的缩写,默认tx
# 对于B站,此项可选0-n表示不同的cdn服务器,默认为0,也可以输入特定的CDN域名前缀,例如 c1--cn-gotcha208
# 斗鱼和抖音暂时没用
flow_cdn: ~

# ffmpeg http参数
# 使用streamgears作为录制引擎时不生效
ffmpeg_stream_args: [-fflags,+discardcorrupt,-reconnect,'1',-rw_timeout,'10000000',
                      '-analyzeduration','15000000',
                      '-probesize','50000000',
                      '-thread_queue_size', '16']

# 关闭下载过慢自动重启功能,默认false
# 使用streamgears作为录制引擎时不生效
disable_lowspeed_interrupt: False

# 检测流变化,在推流信息变化时立即分段,建议录制手机直播时开启,PC直播时关闭,默认false
# 使用streamgears作为录制引擎时不生效
check_stream_changes: False

# 以下是弹幕录制参数

# 弹幕录制格式,只能选择ass
dm_format: ass 

# 弹幕上下间距(行距),设置为0-1的表示为视频宽度的倍数,设置为大于1的数表示像素,默认6
margin_h: 5

# 弹幕左右间距,设置为-1表示允许弹幕叠加,设置为0-1的表示间距为视频宽度的倍数,设置为大于1的数表示像素,默认0.05
# 实际上这个东西就是弹幕密度,弹幕左右间距越大密度越小
margin_w: 0.05

# 指定弹幕占屏幕的最大比例(即屏幕上半部分有多少可以用来显示弹幕),默认为0.4
dmrate: 0.3

# 指定弹幕字体,默认为微软雅黑字体(Microsoft YaHei)
font: HarmonyOS Sans SC Bold

# 指定弹幕字体大小,默认为36
fontsize: 42

# Distance from Screen Top 弹幕距离屏幕顶端的距离(像素,例如20,表示距离屏幕顶端20px)
dst: 15

# 指定单条弹幕持续时间(秒),默认为16
dmduration: 18

# 指定弹幕不透明度,默认为0.8
opacity: 0.8

# 使用自适应弹幕大小(会让把设置的弹幕大小按1080P标准缩放)
auto_fontsize: True

# 弹幕描边颜色(6位十六进制)
outlinecolor: 000000

# 弹幕描边宽度
outlinesize: 0.7

# 弹幕延迟补偿(秒),一般情况下弹幕比视频慢,设置这个强行把弹幕提前
dm_delay_fixed: 3.0

# 弹幕录制程序自动重启间隔(在没人发弹幕的时候会定时重启,保证录制正常,默认300秒,0关闭)
dm_auto_restart: 300

# 弹幕过滤规则,一个正则表达式数组(也可以直接输入关键字),满足其中任意条件的弹幕将被过滤,默认为空(不过滤弹幕)
# 例如:[菜, fw]
dm_filter: []
SmallPeaches commented 1 year ago

如果是颜色不一样,并且不是每个弹幕都重复的话应该不是我这个的问题?感觉像是服务器就返回了相同的弹幕? 至于重复的问题实际上默认0.05间距并不能完全保证不重复,如果想尽可能不重复可以考虑改margin_w的数值。

ddd-zero commented 1 year ago

如果是颜色不一样,并且不是每个弹幕都重复的话应该不是我这个的问题?感觉像是服务器就返回了相同的弹幕? 至于重复的问题实际上默认0.05间距并不能完全保证不重复,如果想尽可能不重复可以考虑改margin_w的数值。

你那里完全正常吗?如果完全正常,无法复现的话,我尝试换成python3.9看看

ddd-zero commented 1 year ago

我尝试用一台新电脑,外加从电信换到移动,python也换到了3.9,弹幕仍然有很多重复。此时我用网页端看弹幕,并没有发现有重复的弹幕。另外我观察到,在网页刚打开的时候,前几十条弹幕中确实有几条是有重复的

SmallPeaches commented 1 year ago

你录制的哪个主播,我来试一下。

ddd-zero commented 1 year ago

你录制的哪个主播,我来试一下。

我是从热门里挑的 弹幕最多的主播测试的。这两天测了3个主播都是这样。 https://live.bilibili.com/all?visit_id=6t3vbqmle180 刚刚新电脑做测试的是用的 https://live.bilibili.com/5050 这个

ddd-zero commented 1 year ago

B站刚打开的时候确实有重复现象 image

ddd-zero commented 1 year ago

test-20231002-192016-Part000.txt

这是我刚刚录的,还是有重复,python3.9

SmallPeaches commented 1 year ago

我找到问题了,就是服务器返回了两个一样但是类型不同的弹幕,一个是常规弹幕(DANMU_MSG),另外一个是互动弹幕(LIVE_INTERACTIVE_GAME)。 应该就是这两天改的,叔叔的前端都没完全改好,也正好符合看历史弹幕会重复的情况。