
[英]'VoiceClient' object has no attribute 'create_ffmpeg_player'
[英]Parsing file-like object into create_ffmpeg_player in discord.py not working
用于create_ffmpeg_player的API文档说,它允许将类似文件的对象传递到create_ffmpeg_player中,因为它将被传递到stdin。
create_ffmpeg_player(filename, *, use_avconv=False, pipe=False, stderr=None, options=None, before_options=None, headers=None, after=None)
filename – ffmpeg将获取并转换为PCM字节的文件名。 如果pipe为True,则这是一个类似文件的对象,传递给ffmpeg的stdin
这是我输入的内容:
buffer = BytesIO()
c.setopt(c.WRITEDATA, buffer)
c.perform()
player = voice.create_ffmpeg_player(buffer,pipe=True)
PycURL对象将数据写入作为BytesIO对象的buffer
。
然后,我尝试将类似文件的对象解析为create_ffmpeg_player(),但出现以下错误:
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "test.py", line 116, in on_message
player = voice.create_ffmpeg_player(buffer,pipe=True)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\voice_client.py", line 431, in create_ffmpeg_player
p = subprocess.Popen(args, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 667, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 904, in _get_handles
p2cread = msvcrt.get_osfhandle(stdin.fileno())
io.UnsupportedOperation: fileno
该错误向我显示,在堆栈中的某个位置,例程正在尝试获取对象的fileno(),但是由于这不是真实文件,因此没有文件句柄或“ fileno”。 对于临时的解决方法,我在磁盘上创建一个物理文件并将该文件解析为函数,但是对于此程序,该函数将运行多次,因此进行物理读/写操作不切实际。 是否有可能解决此问题,或者至少在内存中创建具有获取/欺骗文件编号能力的文件?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.