【发布时间】: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