Был в тупик проблема с попеном в течение нескольких дней.mplayer не любит всплывать внезапно?
Код:
int main(){
FILE *fp = popen("mplayer /home/linaro/Music/cp.mp3", "r");
char buffer[1028];
while (fgets(buffer, 1028, fp) != NULL)
{
std::cerr<<buffer;
}
pclose(fp);
fp = 0;
return 0;
}
был запущен в магазине на Линаро встроенный контроллер. Хорошо, никаких ошибок. Несмотря на то, что код прост (просто воспроизводит песню Coldplay при исполнении, а затем завершает работу), похоже, это вызывает у меня больше горя, чем можно было бы подумать.
Если я скопирую и вставляю команду в обычную оболочку bash, она работает нормально. И что еще хуже, это нормально, пока он не подключен где-то еще. Я не уверен, подключен ли он к гнезду для наушников по сравнению с тем, как он был в линейном гнезде.
Несмотря на это, ошибка я получаю, когда я бегу он (кратко вниз к соответствующей части)
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlaye4
Team mplayer: could not connect to socket mplayer: No such file or
directory Failed to open LIRC support. You will not be able to use
your remote control.
Playing /home/linaro/Music/cp.mp3 libavformat version 53.21.1
(external) Mismatching header version 53.19.0 Audio only file format
detected. Clip info: Title: The Scientist Artist: Coldplay Album: A
Rush Of Blood To The Head Year: 2002 Comment: Genre: Unknown Load
subtitles in /home/linaro/Music/ Requested audio codec family [mpg123]
(afm=mpg123) not available. Enable it at compilation. Opening audio
decoder: [ffmpeg] FFmpeg/libavcodec audio decoders libavcodec version
53.35.0 (external) Mismatching header version 53.32.2 AUDIO: 44100 Hz, 2 ch, floatle, 256.0 kbit/9.07% (ratio: 32002->352800) Selected audio
codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio) Home
directory not accessible: Permission denied AO: [pulse] Init failed:
Connection refused Failed to initialize audio driver 'pulse' Home
directory not accessible: Permission denied [AO_ALSA] alsa-lib:
pcm_hw.c:1293:(snd_pcm_hw_open) open '/dev/snd/pcmC1D0p' failed (-22):
Invalid argument [AO_ALSA] Playback open error: Invalid argument
Failed to initialize audio driver 'alsa' [AO SDL] Samplerate: 44100Hz
Channels: Stereo Format floatle [AO SDL] using aalib audio driver. [AO
SDL] Unsupported audio format: 0x1d. [AO SDL] Unable to open audio: No
available audio device Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound. Audio: no sound
Video: no video
Опять же, если скопировать и вставить точную команду он выполняет с помощью POPEN в консоль, она начинает играть. Это терпит неудачу, если pass -ao alsa, -ao pulse, -ao oss, а также, что полностью меня преклоняет. Любая помощь будет оценена!
Edit: Linux является Линаро, основанный на Ubuntu 12.04 с использованием процессор ARM
Я вижу, что многие разрешения отрицают ошибки. Как вы начинаете свою C-программу? Что произойдет, если вы перекроете свою программу на C с помощью сценария bash? Кроме того, добавьте, какую именно версию дистрибутива Linux вы используете, и если SELinux или AppArmor находятся в игре. –
От 'man popen()': "* Эта команда передается в/bin/sh *" Так что же делает '/ bin/sh' запуск в тестовой среде? – alk
Jonas: Я выполняю его с помощью sudo, однако mplayer сам по себе с терминала работает как с, так и без sudo. – M4rc