2016-05-24 6 views
0

VLC 2.2.3, python-vlc 1.1.2.Связи Python для libVLC - невозможно изменить устройство вывода звука

У меня есть виртуальный аудиовыход и я пытаюсь получить 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]) 

Я запустить код несколько раз, меняя идентификатор устройства в соответствии с кодом комментария. Однако устройство вывода фактически не изменяется. Это головная боль по двум причинам:

1) audio_output_device_set() ничего не возвращает. Я не могу сказать, выполняю ли я что-нибудь, когда запускаю эту функцию. 2) Я даже не могу запустить audio_output_device_get(), чтобы проверить, работает ли функция set, поскольку это только для libvlc 3. Я бы предпочел, чтобы моя программа работала с 2.2.3.

Итак, что я сделал дальше, это установить VLC 3.0 и запустить с ним вышеуказанный код. Теперь работает audio_output_device_get(), и я вижу, что функция set фактически меняет выходное устройство на виртуальный вывод. Но звук STILL воспроизводится на динамиках.

Что происходит? Как это исправить?

Я спросил на форумах VLC и получил необычайно бесполезный ответ, в котором говорилось мне «проверять журналы и документацию». Вот и все. Я был перенаправлен на довольно недостающую документацию, чтобы зайти так далеко. Несмотря на то, что я сомневаюсь, что это может помочь, я решил попробовать зарегистрироваться. Я думал, что это будет так же просто, как позвонить libvlc_log_set_file, но ему нужен указатель файла libVLC, и я не знаю, как создать его с именем и режимом, как в Python.

ТЛ; др:

1) Как успешно изменить устройство вывода звука? 2) Как настроить максимальную регистрацию подробностей?

ответ

0

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') 

 Смежные вопросы

  • Нет связанных вопросов^_^