Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

严重的BUG 多个主播文件名混淆 #101

Open
NormanMises opened this issue Mar 12, 2024 · 18 comments
Open

严重的BUG 多个主播文件名混淆 #101

NormanMises opened this issue Mar 12, 2024 · 18 comments
Labels
bug Something isn't working

Comments

@NormanMises
Copy link

运行环境

版本号:v2.33
运行平台:Windows 11
运行架构:x64
Python版本:3.10.6

配置文件

{
  "proxy": "http://127.0.0.1:10809",
  "output": "E:/records/0-Captures",
  "user": [
    {
      "platform": "Pandalive",
      "id": "pandaex",
      "output": "E:/records/0-Captures/PD",
      "proxy": null,
      "cookies": xxxx
    },
    {
      "platform": "Pandalive",
      "id": "jinricp",
      "output": "E:/records/0-Captures/PD",
      "proxy": null,
      "cookies": 
    },
    {
      "platform": "Pandalive",
      "id": "imissy0u",
      "output": "E:/records/0-Captures/PD",
      "proxy": null,
      "cookies": xxxxxx
    },

复现步骤(可选)

当同时录制多个主播时,不同主播名称混淆,名称错误
QQ截图20240312130019

错误描述

当同时录制多个主播时,不同主播名称混淆,名称错误
QQ截图20240312130019
log_2024-03-11.log

错误日志

已上传

错误截图(可选)

No response

@NormanMises NormanMises added the bug Something isn't working label Mar 12, 2024
@auqhjjqdo
Copy link
Owner

文件名中的主播名是config.json中自定义的name字段,直播标题取自官方api接口返回的数据,我自己测试并未出现文件名混淆的问题

@auqhjjqdo
Copy link
Owner

我看你的日志里,录制的文件名并非[年.月.日 时.分.秒][平台][主播名]直播标题.格式的形式,如果你是自己修改过代码,请自行解决模板字符串的对应关系

@NormanMises
Copy link
Author

嗯应该是我改的地方有点问题 是想按streamlink官方那样命名来着😂

@NormanMises
Copy link
Author

NormanMises commented Mar 15, 2024

这样中括号看起来太难受了 标题也不是很必要感觉

@NormanMises
Copy link
Author

NormanMises commented Mar 15, 2024

image
破案了 用最新的exe也这样

@auqhjjqdo
Copy link
Owner

image 破案了 用最新的exe也这样

这个地方的名字是取的config.json里写的name字段,没写name那就取的id,所有平台都这么写的,换个name看看呢

name = user.get('name', self.id)

@NormanMises
Copy link
Author

我根本没设name,默认用的id🤣

@auqhjjqdo
Copy link
Owner

name = user.get('name', self.id)
self.flag = f'[{platform}][{name}]'

filename = f'[{live_time}]{self.flag}{title[:50]}.{format}'

filename = self.get_filename(title, format)

output = FileOutput(Path(f'{self.output}/{filename}'))

这是文件名的几个引用,都是封装在基类LiveRecorder里的函数,所有录制的平台共用该文件名获取逻辑,至于你这种情况pandalive是错的我没测出来

@auqhjjqdo
Copy link
Owner

有一种可能,就是pandalive直播是录制的同一个主播,但官方返回的直播流是另一个主播的,导致文件名和直播流不匹配,这种是官方原因无解

@NormanMises
Copy link
Author

NormanMises commented Mar 16, 2024

有一种可能,就是pandalive直播是录制的同一个主播,但官方返回的直播流是另一个主播的,导致文件名和直播流不匹配,这种是官方原因无解

不是吧,我用streamlink命令行没出现过这样的情况,是不是这开多线程导致变量共用之类的问题

@auqhjjqdo
Copy link
Owner

有一种可能,就是pandalive直播是录制的同一个主播,但官方返回的直播流是另一个主播的,导致文件名和直播流不匹配,这种是官方原因无解

不是吧,我用streamlink命令行没出现过这样的情况,是不是这开多线程导致变量共用之类的问题

主程序是用的协程,只有调用steamlink录制和ffmpeg封装时为了防止阻塞才用了线程,变量都是直接传进线程里,最后只返回运行是否成功的状态,如果线程安全原因导致的变量冲突理论上开多个平台的直播都会全部出现问题,不只是pandalive
另外之前有部分用户反馈pandalive有出现花屏现象,估计也是官方的直播流混流的原因

@NormanMises
Copy link
Author

好吧 需要手动检查就是了。老哥能不能给ffmpeg下载的时候加一些参数使得可以直接剪辑呀,我现在都要手动转码才能剪辑(用的是losslesscut)https://github.com/mifi/lossless-cut

@auqhjjqdo
Copy link
Owner

好吧 需要手动检查就是了。老哥能不能给ffmpeg下载的时候加一些参数使得可以直接剪辑呀,我现在都要手动转码才能剪辑(用的是losslesscut)https://github.com/mifi/lossless-cut

个性化需求建议自己fork改代码,具体修改地址如下

ffmpeg.input(f'{self.output}/{filename}').output(
f'{self.output}/{new_filename}',
codec='copy',
map_metadata='-1',
movflags='faststart'
).global_args('-hide_banner').run()

codec为copy就是不转码只封装,你可以改成libx264之类的实现转码
其他的参数请参考https://kkroening.github.io/ffmpeg-python/

@NormanMises
Copy link
Author

好的谢谢

@daxiaamo
Copy link

我也发现了输出的文件名和流的名字不一致这个问题而且不一致的流必然会花屏,只要你直播间开的够多在afreecaTV上也能复现一样的问题我,但是当你把出问题的直播间单独录制的时候就可以正常录制,在逻辑上我分析可能是由于没有成功申请到流所以已经存在的流信息被复用了,在Windows上似乎还存在内存泄漏问题,当你一直开着检测录制的时候占用的内存会一直增加有一部分不会回收,到一定成都程序会因为内存占满而自动退出,需要定期重启来重置内存占用。

@stale stale bot added the wontfix This will not be worked on label Apr 18, 2024
@stale stale bot closed this as completed Apr 25, 2024
Repository owner deleted a comment from stale bot Jul 6, 2024
@auqhjjqdo auqhjjqdo removed the wontfix This will not be worked on label Jul 6, 2024
@auqhjjqdo auqhjjqdo reopened this Jul 6, 2024
@NormanMises
Copy link
Author

文件名混淆这个估计是我改代码出问题了,源代码应该没问题

@auqhjjqdo
Copy link
Owner

混流花屏的问题好像还是存在,也有其他人发issue,但我一直没复现出来,其他平台同时录制好几个直播都没见有人说花屏,我还是怀疑平台自身原因

@Hertz221
Copy link

Hertz221 commented Jul 7, 2024

我的issus跟楼上说的一样(就是bigo直播),至于是主播名混淆还是什么,不清楚,画面花屏会出现两个主播的画面(可能就是这个原因花屏的?),文件名是其中一个主播的,大概跟这个issus是一个问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants