Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libVLC的Python绑定-无法更改音频输出设备_Python_Audio_Vlc_Libvlc - Fatal编程技术网

libVLC的Python绑定-无法更改音频输出设备

libVLC的Python绑定-无法更改音频输出设备,python,audio,vlc,libvlc,Python,Audio,Vlc,Libvlc,VLC2.2.3,python VLC1.1.2 我有一个虚拟音频输出,我正试图让libVLC在上面输出。到目前为止,我可以看到虚拟输出出现在libVLC中,但选择它会在默认输出(即扬声器)上播放音频 这是我所拥有的相关部分: self.Instance = vlc.Instance() self.player = self.Instance.media_player_new() devices = [] mods = self.player.audio_output_device_enum(

VLC2.2.3,python VLC1.1.2

我有一个虚拟音频输出,我正试图让libVLC在上面输出。到目前为止,我可以看到虚拟输出出现在libVLC中,但选择它会在默认输出(即扬声器)上播放音频

这是我所拥有的相关部分:

self.Instance = vlc.Instance()
self.player = self.Instance.media_player_new()

devices = []
mods = self.player.audio_output_device_enum()

if mods:
    mod = mods
    while mod:
        mod = mod.contents
        devices.append(mod.device)
        mod = mod.next

vlc.libvlc_audio_output_device_list_release(mods)

# this is the part I change on each run of the code.
self.player.audio_output_device_set(None, devices[0]) 
我已经多次运行代码,根据代码注释更改设备ID。然而,输出设备实际上并没有改变。这是一个令人头痛的问题,原因有二:

1) 音频输出设备集()不返回任何内容。当我运行这个函数时,我不知道我是否真的完成了任何事情。 2) 我甚至不能运行audio_output_device_get()来检查set函数是否在执行任何操作,因为这只适用于libvlc 3。我更希望我的程序使用2.2.3

所以,我接下来做的是安装VLC3.0并用它运行上面的代码。现在,audio_output_device_get()工作了,我可以看到set函数实际上正在将输出设备更改为虚拟输出。但声音仍然在扬声器上播放

发生什么事了?我该如何解决这个问题

我在VLC论坛上询问,得到了一个毫无帮助的回复,告诉我“检查日志和文档”。就这样。为了达到这一目的,我一直非常专注于相当缺乏的文档。尽管我怀疑它是否有帮助,我还是决定尝试登录。我原以为它会像调用
libvlc_log_set_file
一样简单,但它需要一个libvlc文件指针,我不知道如何使用Python中的名称和模式创建一个指针

tl;博士:

1) 如何成功更改音频输出设备? 2) 如何设置最大冗余日志记录?

1)由于某种原因,我必须暂停并取消暂停,然后VLC才能注册我的更改

此代码修复了以下问题:

[... rest of GUI class ...]
self.p.play()
self.root.after(350, self.DeviceSet)

def DeviceSet(self):
    self.p.audio_output_device_set(None, self.audiodevice)
    self.p.pause()
    self.root.after(10)
    self.p.pause()
2) 初始化VLC,如下所示:

self.instance = vlc.Instance('--verbose 9')