2017-01-11 25 views
0

Уважаемые коллеги -Нет Аудиовыход на Kivy приложений, работающих на Rasperry Pi Джесси

Я надеюсь, что вы делаете хорошо. Я надеюсь, что вы можете помочь мне разобраться в необычной аудио-проблеме, с которой работает Kivy на Raspberry Pi. В двух словах, я не могу заставить Kivy производить любые звуки, работающие на малине Pi. Я не уверен в других аппаратных средствах, поскольку я только разрабатываю RPi. Мой код ниже. Это просто приложение для звукового сопровождения. Нажмите кнопку, и она воспроизведет файл. Он должен работать теоретически, но это не так. Я прочитал каждую отдельную запись StackOverflow и Reddit. Я пробовал десятки вариантов моего кода. Независимо от того, что я делаю, Киви все еще молчал, как мышь.

Вот что я бегу:

  • Raspberry Pi 3 Модель B
  • Rasbian - Linux 4.4.38 raspberrypi-v7 + # 938 SMP Чт 15 декабря 15:22:21 GMT 2016 armv7l GNU/Linux
  • Kivy - 1.9.2-dev0

Что я пробовал:

  • USB Audio & System Audio - Я попытался использовать разъем аудиосистемы (наушники) системы, а также звуковую карту USB. В частности, я использую Plugable USB Headphone Adapter. Да, мои колонки подключены к правильным портам. Я обновил свои файлы конфигурации по умолчанию адаптеру USB, так как я получал слишком много помех от выхода системной платы.

  • Форматы - я пробовал как MP3, WAV, OGG формат. Нет кубиков. Воспроизведение с терминала - я могу получить систему для создания звука с использованием других методов. Я могу заставить Rasbian играть как аудио, так и на терминале с помощью mpg321. Эта команда «mpg321» /home/pi/burnedpi/assets/audio/scotch.mp3 »успешно декодирует и воспроизводит файл MP3.

  • Он будет выводить звук только через USB. Я тестировал свои динамики в терминал с «динамик-тест -c2 -t WAV» команды, и они работают.

  • я отрегулированы и подтвердил мои аудио внутренние настройки аудио микшера в alsmixer. звуковая карта имеет громкость правильно загнуты.

  • Работа с другими командами и программами. Я уверен, что эта проблема связана только с Kivy on Pi. Другие приложения способны воспроизводить звук просто отлично. Пример

  • Звуковые приложения Kivy не работают. Официальные звуковые примеры Kivy, которые устанавливаются по умолчанию, не создают никакого звука.

По существу, я просто пытаюсь заставить Kivy выводить звук. У меня есть простой простой скрипт, который выводит аудиофайл при нажатии мыши.

Я действительно застрял и не знаю, что делать дальше. Любая помощь будет принята с благодарностью.

Cheers.

Steve.

Вот мой код.

Мои разделительные/Вкладки являются правильными, но Stack делает его трудно форматировать

* main.py *

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.boxlayout import BoxLayout 
from kivy.properties import ListProperty, ObjectProperty, NumericProperty 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.core.audio import SoundLoader 


class SoundBoard(Screen): 
    def scotch(self): 
    sound = SoundLoader.load('../assets/audio/scotch.wav') 
    if sound: 
     sound.play() 
     sound.seek(0.00) 
     print("Sound found at %s" % sound.source) 
     print("Sound is %.3f seconds" % sound.length) 
     print("Sound status %s" % sound.status) 

class RootScreen(ScreenManager): 
    pass 

class audio(App): 
    def build(self): 
     return SoundBoard() 

if __name__ == "__main__": 
    audio().run() 

audio.kv

<RootScreen> 
    SoundBoard: 

<SoundBoard> 
    name: 'soundboard' 
    BoxLayout: 
     Button: 
      text: 'i love scotch scotchy scotch scotch' 
      on_press: root.scotch() 

* Вот что я получаю, когда я бегу код: *

[email protected]:~ $ python burnedpi/audio/main.py 
[INFO ] [Logger  ] Record log in /home/pi/.kivy/logs/kivy_17-01-11_84.txt 
[INFO ] [Image  ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored) 
[INFO ] [Kivy  ] v1.9.2-dev0 
[INFO ] [Python  ] v2.7.9 (default, Sep 17 2016, 20:26:04) 
[GCC 4.9.2] 
[INFO ] [Factory  ] 193 symbols loaded 
[INFO ] [Text  ] Provider: sdl2 
[INFO ] [AudioGstplayer] Using Gstreamer 1.4.4.0 
[INFO ] [Audio  ] Providers: audio_gstplayer, audio_sdl2 (audio_ffpyplayer ignored) 
[INFO ] [Window  ] Provider: egl_rpi 
[INFO ] [GL   ] Using the "OpenGL ES 2" graphics system 
[INFO ] [GL   ] Backend used <gl> 
[INFO ] [GL   ] OpenGL version <OpenGL ES 2.0> 
[INFO ] [GL   ] OpenGL vendor <Broadcom> 
[INFO ] [GL   ] OpenGL renderer <VideoCore IV HW> 
[INFO ] [GL   ] OpenGL parsed version: 2, 0 
[INFO ] [GL   ] Shading version <OpenGL ES GLSL ES 1.00> 
[INFO ] [GL   ] Texture max size <2048> 
[INFO ] [GL   ] Texture max units <8> 
[INFO ] [Shader  ] fragment shader: <Compiled> 
[INFO ] [Shader  ] vertex shader: <Compiled> 
[INFO ] [Window  ] virtual keyboard not allowed, single mode, not docked 
[INFO ] [OSC   ] using <multiprocessing> for socket 
[INFO ] [ProbeSysfs ] device match: /dev/input/event0 
[INFO ] [MTD   ] Read event from </dev/input/event0> 
[INFO ] [ProbeSysfs ] device match: /dev/input/event1 
[INFO ] [MTD   ] Read event from </dev/input/event1> 
[INFO ] [ProbeSysfs ] device match: /dev/input/event0 
[INFO ] [HIDInput ] Read event from </dev/input/event0> 
[INFO ] [ProbeSysfs ] device match: /dev/input/event1 
[INFO ] [HIDInput ] Read event from </dev/input/event1> 
[INFO ] [Base  ] Start application main loop 
[INFO ] [MTD   ] </dev/input/event0> range position X is 0 - 800 
[INFO ] [MTD   ] </dev/input/event0> range position Y is 0 - 480 
[INFO ] [MTD   ] </dev/input/event0> range touch major is 0 - 0 
[INFO ] [MTD   ] </dev/input/event0> range touch minor is 0 - 0 
[INFO ] [MTD   ] </dev/input/event0> range pressure is 0 - 255 
[INFO ] [MTD   ] </dev/input/event0> axes invertion: X is 0, Y is 0 
[INFO ] [MTD   ] </dev/input/event0> rotation set to 0 
[INFO ] [MTD   ] </dev/input/event1> range position X is 0 - 0 
[INFO ] [MTD   ] </dev/input/event1> range position Y is 0 - 0 
[INFO ] [HIDMotionEvent] using <FT5406 memory based driver> 
[INFO ] [MTD   ] </dev/input/event1> range touch major is 0 - 0 
[INFO ] [HIDMotionEvent] <FT5406 memory based driver> range ABS X position is 0 - 800 
[INFO ] [MTD   ] </dev/input/event1> range touch minor is 0 - 0 
[INFO ] [HIDMotionEvent] <FT5406 memory based driver> range ABS Y position is 0 - 480 
[INFO ] [MTD   ] </dev/input/event1> range pressure is 0 - 255 
[INFO ] [GL   ] NPOT texture support is available 
[INFO ] [HIDMotionEvent] <FT5406 memory based driver> range position X is 0 - 800 
[INFO ] [MTD   ] </dev/input/event1> axes invertion: X is 0, Y is 0 
[INFO ] [HIDMotionEvent] <FT5406 memory based driver> range position Y is 0 - 480 
[INFO ] [HIDMotionEvent] using <C-Media Electronics Inc. USB Audio Device> 
[INFO ] [MTD   ] </dev/input/event1> rotation set to 0 
Sound found at /home/pi/burnedpi/assets/audio/scotch.wav 
Sound is 5.486 seconds 
Sound status play 

Вот информация из файла журнала Kivy

[INFO ] Logger: Record log in /home/pi/.kivy/logs/kivy_17-01-11_84.txt 
[INFO ] Image: Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored) 
[INFO ] Kivy: v1.9.2-dev0 
[INFO ] Python: v2.7.9 (default, Sep 17 2016, 20:26:04) 
[GCC 4.9.2] 
[INFO ] Factory: 193 symbols loaded 
[INFO ] Text: Provider: sdl2 
[INFO ] AudioGstplayer: Using Gstreamer 1.4.4.0 
[INFO ] Audio: Providers: audio_gstplayer, audio_sdl2 (audio_ffpyplayer ignored) 
[INFO ] Window: Provider: egl_rpi 
[INFO ] GL: Using the "OpenGL ES 2" graphics system 
[INFO ] GL: Backend used <gl> 
[INFO ] GL: OpenGL version <OpenGL ES 2.0> 
[INFO ] GL: OpenGL vendor <Broadcom> 
[INFO ] GL: OpenGL renderer <VideoCore IV HW> 
[INFO ] GL: OpenGL parsed version: 2, 0 
[INFO ] GL: Shading version <OpenGL ES GLSL ES 1.00> 
[INFO ] GL: Texture max size <2048> 
[INFO ] GL: Texture max units <8> 
[INFO ] Shader: fragment shader: <Compiled> 
[INFO ] Shader: vertex shader: <Compiled> 
[INFO ] Window: virtual keyboard not allowed, single mode, not docked 
[INFO ] OSC: using <multiprocessing> for socket 
[INFO ] ProbeSysfs: device match: /dev/input/event0 
[INFO ] MTD: Read event from </dev/input/event0> 
[INFO ] ProbeSysfs: device match: /dev/input/event1 
[INFO ] MTD: Read event from </dev/input/event1> 
[INFO ] ProbeSysfs: device match: /dev/input/event0 
[INFO ] HIDInput: Read event from </dev/input/event0> 
[INFO ] ProbeSysfs: device match: /dev/input/event1 
[INFO ] HIDInput: Read event from </dev/input/event1> 
[INFO ] Base: Start application main loop 
[INFO ] MTD: </dev/input/event0> range position X is 0 - 800 
[INFO ] MTD: </dev/input/event0> range position Y is 0 - 480 
[INFO ] MTD: </dev/input/event0> range touch major is 0 - 0 
[INFO ] MTD: </dev/input/event0> range touch minor is 0 - 0 
[INFO ] MTD: </dev/input/event0> range pressure is 0 - 255 
[INFO ] MTD: </dev/input/event0> axes invertion: X is 0, Y is 0 
[INFO ] MTD: </dev/input/event0> rotation set to 0 
[INFO ] MTD: </dev/input/event1> range position X is 0 - 0 
[INFO ] MTD: </dev/input/event1> range position Y is 0 - 0 
[INFO ] HIDMotionEvent: using <FT5406 memory based driver> 
[INFO ] MTD: </dev/input/event1> range touch major is 0 - 0 
[INFO ] HIDMotionEvent: <FT5406 memory based driver> range ABS X position is 0 - 800 
[INFO ] MTD: </dev/input/event1> range touch minor is 0 - 0 
[INFO ] HIDMotionEvent: <FT5406 memory based driver> range ABS Y position is 0 - 480 
[INFO ] MTD: </dev/input/event1> range pressure is 0 - 255 
[INFO ] GL: NPOT texture support is available 
[INFO ] HIDMotionEvent: <FT5406 memory based driver> range position X is 0 - 800 
[INFO ] MTD: </dev/input/event1> axes invertion: X is 0, Y is 0 
[INFO ] HIDMotionEvent: <FT5406 memory based driver> range position Y is 0 - 480 
[INFO ] HIDMotionEvent: using <C-Media Electronics Inc. USB Audio Device> 
[INFO ] MTD: </dev/input/event1> rotation set to 0 
[INFO ] Base: Leaving application in progress... 
[WARNING] stderr: Traceback (most recent call last): 
[WARNING] stderr: File "burnedpi/audio/main.py", line 27, in <module> 
[WARNING] stderr:  audio().run() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/app.py", line 828, in run 
[WARNING] stderr:  runTouchApp() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/base.py", line 504, in runTouchApp 
[WARNING] stderr:  EventLoop.window.mainloop() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 90, in mainloop 
[WARNING] stderr:  self._mainloop() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 85, in _mainloop 
[WARNING] stderr:  EventLoop.idle() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/base.py", line 339, in idle 
[WARNING] stderr:  Clock.tick() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 553, in tick 
[WARNING] stderr:  current = self.idle() 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 533, in idle 
[WARNING] stderr:  usleep(1000000 * sleeptime) 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 717, in usleep 
[WARNING] stderr:  _usleep(microseconds, self._sleep_obj) 
[WARNING] stderr: File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 445, in _usleep 
[WARNING] stderr:  _libc_usleep(int(microseconds)) 
[WARNING] stderr: KeyboardInterrupt 

ответ

0

Фигурные его. Задайте переменную окружения перед импортом Kivy. Добавьте это в начало файла.

import os 
os.environ['KIVY_AUDIO'] = 'sdl2' 

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.boxlayout import BoxLayout 
from kivy.properties import ListProperty, ObjectProperty, NumericProperty 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.core.audio import SoundLoader 

class SoundBoard(Screen): 
    def scotch(self): 
     sound = SoundLoader.load('../assets/audio/scotch.wav') 
     if sound: 
      sound.play() 
      sound.seek(0.00) 
      print("Sound found at %s" % sound.source) 
      print("Sound is %.3f seconds" % sound.length) 
      print("Sound status %s" % sound.status) 

class RootScreen(ScreenManager): 
    pass 

class audio(App): 
    def build(self): 
     return SoundBoard() 

if __name__ == "__main__": 
    audio().run() 

Перед импортом Kivy убедитесь, что вы установили свои переменные окружающей среды. Используйте этот формат:

import os 
os.environ['KIVY_AUDIO'] = 'sdl2' 

ЗАКАНЧИВАТЬ https://kivy.org/docs/guide/environment.html для получения дополнительной информации.