【问题标题】:Loading a sound with kivy on my Android device在我的 Android 设备上使用 kivy 加载声音
【发布时间】:2017-03-16 21:46:03
【问题描述】:

已解决

我有一个播放声音的 kivy 应用程序。它在 GNU/Linux 上运行良好,但应用程序在我的 Android 设备上崩溃。以下是命令中的几行: buildozer android_new debug deploy run logcat

V/SDL     (29083): SDL audio: opening device
V/SDL     (29083): SDL audio: wanted stereo 16-bit 44.1kHz, 4096 frames buffer
I/AudioPolicyManager( 2267): getOutputForAttr() device 0x2, samplingRate 44100, format afcad8d8, channelMask 1, flags 0
I/AudioPolicyManager( 2267): getOutputForAttr() output 2
W/AudioPolicyIntefaceImpl( 2267): Skipped to add effects on session 182
I/AudioPolicyManager( 2267): startOutput() output 2, stream 3, session 182
I/AudioPolicyManager( 2267): changeRefCount() stream 3, count 1
I/AudioPolicyManager( 2267): setOutputDevice() setting same device 0002 or null device for output 2
V/SDL     (29083): SDL audio: got stereo 16-bit 44.1kHz, 4096 frames buffer
I/python  (29083): [WARNING] [AudioSDL2   ] Unable to load sounds/applause.wav: Mix_LoadWAV_RW with NULL src
D/AudioMixer( 2267): setResampler format 1, data ch 2, src 44100, dst 48000, dnmix 0, reformat 0
D/SoundAliveResampler( 2267): [SoundAliveResampler] Init+++
I/AudioHardwareTinyALSA( 2267): AudioStreamOutALSA::write setDevice
D/AudioHardwareTinyALSA( 2267): OutALSA::setDevice: mode = 0, newDevice=0x2, currentDevice=0x2 ,force= 0
D/AudioHardwareTinyALSA( 2267): OutALSA::setDevice: mDevice 0x2, newDevice = 0x2
D/AudioHardwareTinyALSA( 2267): setOutputVolume
D/TinyUCM ( 2267): setModifier Normal, en=1
I/AudioHardwareTinyALSA( 2267): OutALSA::setDevice: mHandle NULL mode[0], Device[00000002] nDevice:3 
I/AudioHardwareTinyALSA( 2267): Open:+ mDefaults->direction=0 device=3
D/AudioHardwareTinyALSA( 2267): Channel: 2, Samplerate: 48000, Format: 0, Period Size: 960, Period Count: 4

这是我为此准备的一段 python 代码:

######################################### snip
from kivy.core.audio import SoundLoader
sound = SoundLoader.load('sounds/applause.wav')
sound.play()
######################################### snip

再简单不过了。

在 GNU/Linux 上,kivy 应用运行良好,但在我的三星 Android 平板电脑上尝试加载声音时它崩溃了。

任何建议将不胜感激。

谢谢

【问题讨论】:

  • 使用adb logcat -s python 查看引发的异常。 adb 在您的 sdk 平台工具文件夹中。
  • 我只有我之前发表的东西。我得到的唯一一行是:I/python (31447): [WARNING] [AudioSDL2] Unable to load sound/applause.wav: Mix_LoadWAV_RW with NULL src
  • 在 python/linux 端一切正常。问题来自 Android 和 AudioSDL2。但是有一个问题:什么是“NULL src”?我将尝试使用另一个 wav 文件。也许该文件对 Android 来说不够好。
  • @Juggernaut 使用另一个音频文件我得到了同样的错误。在 python 方面什么都没有。在 python 端没有引发异常。所以问题来自Android。 adb 只给了我一个相关的行,和以前一样:[WARNING] [AudioSDL2] Unable to load sound/12926_sweet_trip_mm_sweep_y.wav: Mix_LoadWAV_RW with NULL src
  • 我能猜到的最好的结果是 NULL src 意味着文件路径无效。尝试使用os.path.abspath 提供绝对路径,然后重试

标签: android python python-2.7 audio kivy


【解决方案1】:

我刚刚解决了我的问题!

原来如此简单:我怎么没想到?!

解决方案是将文件后缀设置为 buildozer.spec 的“source.include_exts”行。

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 2018-02-26
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多