![](/img/trans.png)
[英]How to I get Kivy 1.9.1 or 1.9.2 to use SDL2 instead of pygame on OSX 10.12.2?
[英]How can I get Kivy to use sdl2 on Linux?
我遇到了一個問題,Kivy 在 android 上使用 sdl2,並且工作正常,但在 linux 上它使用 ffpyplayer,但沒有。
所以我也想讓 Kivy 在 linux 上使用 sdl2,但是 sdl2 在 linux 上似乎根本不起作用。
$ KIVY_AUDIO=sdl2 python min_audio_example.py
[INFO ] [Audio ] Providers: audio_sdl2 (audio_ffpyplayer ignored)
[CRITICAL] [AudioSDL2 ] Unable to open mixer: b'No such audio device'
這是一個演示問題的最小示例。
#!/usr/bin/env python
# works with:
# export KIVY_AUDIO=ffpyplayer
# fails with:
# export KIVY_AUDIO=sdl2
from kivy.app import App
from kivy.core.audio import SoundLoader
def playsound(dummy):
sound = SoundLoader.load("440Hz_44100Hz_16bit_05sec.ogg")
if sound:
print("Sound found at %s" % sound.source)
print("Sound is %.3f seconds" % sound.length)
print("sound state", sound.state)
sound.play()
print("sound state", sound.state)
import time
time.sleep(5)
class TestApp(App):
playsound(None)
if __name__ == '__main__':
TestApp().run()
我認為這可能與 kivy 輪的構建方式有關,所以我嘗試了
pip uninstall kivy
pip install -U --no-binary=:all: kivy
那時,kivy 似乎根本看不到 sdl2!
$ KIVY_AUDIO=sdl2 python min_audio_example.py
[INFO ] [Audio ] Providers: (audio_ffpyplayer, audio_pygame ignored)
[WARNING] [Audio ] Unable to find a loader for </home/john/data/sight-sing/sightsinger/440Hz1secfadeinandout.ogg>
它現在將 audio_ffpyplayer 和 audio_pygame 列為提供者,並且由於環境變量而不使用任何一個。 (pygame 提供程序似乎也壞了,但 ffpyplayer 仍然有效)
任何人都可以幫忙嗎?
這是 kivy 輪構建,我嘗試的修復幾乎是正確的。
問題在於,如果 kivy 構建時缺少依賴項,它將在不支持事物的情況下構建,但不會抱怨。
因此,在 debian 上,安裝 kivy 的依賴項:
( https://kivy.org/doc/stable/installation/installation-linux-venvs.html#installation-in-venv )
sudo apt-get install python-pip build-essential git python python-dev ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev
然后:
pip uninstall kivy
然后安裝而不使用損壞的預制輪子
pip install --no-binary kivy kivy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.