aplayがWaveファイルを再生し続けることをテストしたかったので、まずシェルウィンドウで2つの異なるコマンドを試しました(ターゲットをパテ)。
aplay -P -c 1 -t raw -r 16000 -f S16_LE audio/test1.raw
aplay -P -c 1 -t wav -r 32000 -f S16_LE audio/test2.wav
どちらも働いています。
これで、C++を使用して自動的に実行される単純なプログラムmain()を作成しました。
char ac[100] = {0};
int n = 0;
while (1)
{
printf("---%d \n", ++n);
strcpy(ac, "sudo nice -n -10 aplay -P -c 1 -t raw -r 16000 -f S16_LE audio/test1.raw");
system(ac);
delay(1000); //delay 1s
strcpy(ac, "sudo nice -n -10 aplay -P -c 1 -t wav -r 32000 -f S16_LE audio/test2.wav");
system(ac);
delay(1000);
}
遅延()機能:
int delay(int nMs)
{
struct timespec requested_time, remaining;
requested_time.tv_nsec = (nMs%1000)*1000000;
requested_time.tv_sec = (nMs/1000);
return nanosleep (&requested_time, &remaining);
}
その結果、aplayがtest2.wavで停止しました。
root@linaro-ubuntu-desktop:/TEST# sudo nice -n -10 aplay -P -c 1 -t raw -r 16000 -f S16_LE audio/test1.raw
Playing raw data 'audio/test1.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono --- ok, heard
root@linaro-ubuntu-desktop:/TEST# sudo nice -n -10 aplay -P -c 1 -t wav -r 32000 -f S16_LE audio/test2.wav
Playing WAVE 'audio/test2.wav' : Signed 16 bit Little Endian, Rate 32000 Hz, Mono --- ok, heard
root@linaro-ubuntu-desktop:/TEST# ./Test
--- 1
Playing raw data 'audio/test1.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
Playing WAVE 'audio/test2.wav' : Signed 16 bit Little Endian, Rate 32000 Hz, Mono --- ok, heard
^CAborted by signal Interrupt...
--- 2
Playing raw data 'audio/test1.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono --- nok, no sound, hang
^CAborted by signal Interrupt...
Playing WAVE 'audio/test2.wav' : Signed 16 bit Little Endian, Rate 32000 Hz, Mono --- nok, no sound, hang
^CAborted by signal Interrupt...
--- 3
Playing raw data 'audio/test1.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono --- nok, no sound, hang
^CAborted by signal Interrupt...
^C
これは私が知っている範囲を超えた問題です...誰もが説明し、それを防ぐ方法を助けることができますか?私が使用しているオペレーティングシステムは次のとおりです。
lsb_release -a:
No LSB modules are available.
Distributor ID: Linaro
Description: Linaro 11.10 (development branch)
Release: 11.10
Codename: oneiric
cat /proc/version:
Linux version 3.0.35-2666-gbdde708 (root@jt-G31M-S2L) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) ) #14 SMP PREEMPT Thu May 26 11:21:54 CST 2016
サウンドカードはwm8962-audioです。