Raspberry pi 在Rasperry Pi Jesse上运行的Kivy应用程序上没有音频输出

Raspberry pi 在Rasperry Pi Jesse上运行的Kivy应用程序上没有音频输出,raspberry-pi,kivy,raspbian,raspberry-pi3,kivy-language,Raspberry Pi,Kivy,Raspbian,Raspberry Pi3,Kivy Language,尊敬的同事们—— 我希望你做得很好。我希望你能帮我解决在Raspberry Pi上运行Kivy时出现的一个奇怪的音频问题。简而言之,我无法让Kivy在Raspberry Pi上制作任何音频。我不确定其他硬件,因为我只是在RPi上开发。我的代码如下。这只是一个简单的音板应用程序。按下一个按钮,它就会播放一个文件。理论上它应该是可行的,但事实并非如此。我读过每一篇有关StackOverflow和Reddit的文章。我已经尝试了几十种不同的代码。不管我做什么,基维仍然像老鼠一样沉默 以下是我正在运行的

尊敬的同事们——

我希望你做得很好。我希望你能帮我解决在Raspberry Pi上运行Kivy时出现的一个奇怪的音频问题。简而言之,我无法让Kivy在Raspberry Pi上制作任何音频。我不确定其他硬件,因为我只是在RPi上开发。我的代码如下。这只是一个简单的音板应用程序。按下一个按钮,它就会播放一个文件。理论上它应该是可行的,但事实并非如此。我读过每一篇有关StackOverflow和Reddit的文章。我已经尝试了几十种不同的代码。不管我做什么,基维仍然像老鼠一样沉默

以下是我正在运行的:

  • 树莓皮3 B型
  • Rasbian--Linux raspberrypi 4.4.38-v7+#938 SMP周四12月15日15:22:21 GMT 2016 armv7l GNU/Linux
  • Kivy--1.9.2-dev0
我所尝试的:

  • USB音频和系统音频——我试着使用系统音频(耳机)插孔和USB声卡。具体来说,我使用的是可插拔USB耳机适配器。是的,我的扬声器已插入正确的端口。我已将配置文件更新为默认的USB适配器,因为系统板输出干扰太大

  • 格式--我尝试了MP3、WAV和OGG格式。没有骰子。 从终端播放——我可以让系统使用其他方法产生音频。我可以让拉斯宾播放音频,以及在终端上使用mpg321。此命令“mpg321”/home/pi/burnedpi/assets/audio/scotch.mp3”将成功解码并播放mp3文件

  • 它将通过USB输出良好的声音。我用“speaker test-c2-t wav”命令在终端上测试了我的扬声器,它们工作正常

  • 我已在alsmixer中调整并确认了我的音频混音器设置。声卡的音量已正确调高

  • 其他命令和程序也可以工作——我很确定这个问题与Pi上的Kivy有关。其他应用程序也可以很好地产生声音。 范例

  • Kivy音频应用程序不工作——默认安装的官方Kivy音频示例不会生成任何音频

基本上,我只是想让Kivy输出声音。我有一个非常简单的脚本,当点击鼠标时输出音频文件

我真的被卡住了,不知道下一步该怎么办。任何帮助都将不胜感激

干杯

史蒂夫

这是我的代码。

我的间距/制表符是正确的,但堆栈使其难以格式化

*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()
pi@raspberrypi:~ $ 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
音频.kv


音板:
名称:“音板”
盒子布局:
按钮:
文字:“我爱苏格兰威士忌”
按:root.scotch()
*以下是我运行代码时得到的结果:

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()
pi@raspberrypi:~ $ 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
pi@raspberrypi:~$python burnedpi/audio/main.py
[INFO][Logger]记录登录/home/pi/.kivy/logs/kivy_17-01-11_84.txt
[信息][图像]提供商:img_-tex、img_-dds、img_-sdl2、img_-pil、img_-gif(img_-ffpyplayer忽略)
[INFO][Kivy]v1.9.2-dev0
[INFO][Python]v2.7.9(默认,2016年9月17日,20:26:04)
[GCC 4.9.2]
[信息][工厂]加载了193个符号
[信息][文本]提供商:sdl2
[信息][AudioGstplayer]使用Gstreamer 1.4.4.0
[信息][音频]提供商:音频\u gstplayer、音频\u sdl2(忽略音频\u ffpyplayer)
[信息][窗口]提供商:egl_rpi
[信息][GL]使用“OpenGL ES 2”图形系统
[信息][GL]已使用后端
[信息][GL]OpenGL版本
[信息][GL]OpenGL供应商
[INFO][GL]OpenGL渲染器
[INFO][GL]OpenGL解析版本:2,0
[信息][GL]明暗处理版本
[信息][GL]纹理最大大小
[信息][GL]纹理最大单位
[信息][着色器]片段着色器:
[信息][着色器]顶点着色器:
[信息][窗口]不允许使用虚拟键盘,单模,未对接
[信息][OSC]用于插座
[INFO][ProbeSysfs]设备匹配:/dev/input/event0
[信息][MTD]从中读取事件
[INFO][ProbeSysfs]设备匹配:/dev/input/event1
[信息][MTD]从中读取事件
[INFO][ProbeSysfs]设备匹配:/dev/input/event0
[INFO][HIDInput]从中读取事件
[INFO][ProbeSysfs]设备匹配:/dev/input/event1
[INFO][HIDInput]从中读取事件
[INFO][Base]启动应用程序主循环
[信息][MTD]范围位置X为0-800
[信息][MTD]范围位置Y为0-480
[信息][MTD]范围触摸主要是0-0
[信息][MTD]范围触控次要为0-0
[信息][MTD]范围压力为0-255
[信息][MTD]轴反转:X为0,Y为0
[信息][MTD]旋转设置为0
[信息][MTD]范围位置X为0-0
[信息][MTD]范围位置Y为0-0
[INFO][HIDMotionEvent]使用
[信息][MTD]范围触摸主要是0-0
[INFO][HIDMotionEvent]ABS X位置范围为0-800
[信息][MTD]范围触控次要为0-0
[信息][HIDMotionEvent]ABS Y位置范围为0-480
[信息][MTD]范围压力为0-255
[INFO][GL]提供NPOT纹理支持
[INFO][HIDMotionEvent]范围位置X为0-800
[信息][MTD]轴反转:X为0,Y为0
[INFO][HIDMotionEvent]范围位置Y为0-480
[INFO][HIDMotionEvent]使用
[信息][MTD]旋转设置为0
在/home/pi/burnedpi/assets/audio/scotch.wav中找到声音
声音为5.486秒
声音状态播放
以下是来自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
[INFO]记录器:记录登录/home/pi/.kivy/logs/kivy_17-01-11_84.txt
[信息]
import os
os.environ['KIVY_AUDIO'] = 'sdl2'