Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Программа не находит аудио драйвера


Автор: OlegIT 1.3.2012, 09:40
Продолжаю бороться с библиотекой ffmpeg.

Возможно в дальнейшем и с видео драйверами та же проблема возникнет.
Простой, не очень новый ноутбук. Debian 6.0.2. Звук через предустановленный плейер работает.
Собрал программу ffplay библиотеки ffmpeg. При запуске выдаёт ошибку
SDL_OpenAudio: 
3.mp3: could not open codecs

Выяснил, что программа не находит аудио драйверов. Список драйверов в программе после конфигурирования (./configure) выглядит так
/* Available audio drivers */ 
static AudioBootStrap *bootstrap[] = {
         &DSP_bootstrap,
         &DMA_bootstrap,
         &DISKAUD_bootstrap,
         &DUMMYAUD_bootstrap,
         NULL
};
Все четыре функции Audio_Available() возвращают 0. В чем ошибка, как исправить?
Правильно ли я понимаю, конфигуратор «видит» на каком «железе» он работает и соответственно строит программу под это «железо»?
В дальнейшем собираюсь собирать эту программу под ARM. Каким образом конфигурировать библиотеку на ноутбуке под конкретное «железо»?

Автор: kapbepucm 1.3.2012, 15:04
А http://www.debian.org/ports/arm/ случайно нет уже готового решения?

Автор: OlegIT 2.3.2012, 09:35
Ваша ссылка по переносу на ARM годится, но вопросы пока остались. Надеюсь разберусь:)
Больше меня сейчас интересует почему программа вместе со всеми библиотеками сконфигурённая, собранная и запущенная на одном компьютере не находит драйвера?

Автор: newbee 2.3.2012, 09:43
По-моему драйвера (ALSA/OSS) вообще ни при чем. У тебя ffmpeg не сконфигурирован с поддержкой кодека mp3.
Код

./configure --help | grep mp3
--enable-libmp3lame      enable MP3 encoding via libmp3lame [no]

Автор: OlegIT 2.3.2012, 09:56
Библиотеку конфигурю по умолчанию, без аргументов ./configure.
Такая ошибка возникает не только с mp3 файлами, но и с flac и с wav.

Автор: newbee 2.3.2012, 09:58
Я же об этом и говорю! По умолчанию mp3 и куча других кодеков выключены.

Автор: OlegIT 2.3.2012, 11:53
Я так понимаю, если нужны все кодеки, то в аргумент конфига нужно подставить все --enable-libххх и поставить все эти библиотеки.

Ради интереса, библиотеки для flac это libfaac, libfaad, libfaadbin? Больше ни чего похожего не вижу. А для wav какие библиотеки нужны?


libfaac, libfaad, libfaadbin это для формата AAC. Тогда для flac какие библиотеки нужны?

Автор: newbee 2.3.2012, 12:03
Я не знаю многих тонкостей, я просто вытащила из ебилда архив с исходниками ffmpeg и мельком посмотрела ./configure на предмет твой порблемы с mp3. Хочешь, методом тыка, хочешь гугли howto+ffmpeg+flac, решай свою проблему. Наводку я дала, дальше ты должен сам.

Автор: OlegIT 2.3.2012, 12:05
Спасибо, основы усвоил.

Автор: rsm 4.3.2012, 09:15
Цитата(OlegIT @  2.3.2012,  13:53 Найти цитируемый пост)
Ради интереса, библиотеки для flac это libfaac, libfaad, libfaadbin?

Нет. Библиотека FLAC зачастую (в http://archlinuxarm.org smile) поставляется http://www.archlinux.org/packages/extra/i686/flac/files с утилитой flac (внезапно! smile).

Цитата(OlegIT @  2.3.2012,  13:53 Найти цитируемый пост)
А для wav какие библиотеки нужны?

http://www.mega-nerd.com/libsndfile

Автор: OlegIT 5.3.2012, 08:26
У меня, в Debian, утилита flac по умолчанию не установлена.
Похоже моя проблема не в неустановленных библиотеках, libmp3lame установил, результат не изменился.

Код

az@oleg-it:~/ffmpeg-0.6.1$ sudo ./ffplay 3.mp3
FFplay version 0.6.1, Copyright (c) 2003-2010 the FFmpeg developers
  built on Mar  2 2012 17:33:14 with gcc 4.4.5
  configuration: --enable-libmp3lame
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0
[mp3 @ 0x8f33920]max_analyze_duration reached
Input #0, mp3, from '3.mp3':
  Metadata:
    TIT2            : Rhapsody in Blue - LSO, Previn
    TALB            : other
    TCON            : Classical
    TPE1            : George Gershwin
    TCOM            : George Gershwin
  Duration: 00:14:58.97, start: 0.000000, bitrate: 320 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 320 kb/s
SDL_OpenAudio: 
3.mp3: could not open codecs
1330698887.80 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   



Автор: OlegIT 5.3.2012, 13:51
Для видео
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 16:15 DAR 4:3], 8500 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.0: Video: indeo5, yuv410p, 352x288, 25 fps, 25 tbr, 25 tbn, 25 tbc

драйверов и библиотек хватает, полноэкранное видео работает, а аудио не хочет работать. И звукового сопровождения нет и аудио файлы не воспроизводятся.

Автор: kapbepucm 5.3.2012, 13:52
А у готового бинарника из реп Debian такие проблемы есть?

Автор: OlegIT 5.3.2012, 13:55
Нет, в предустановленном проигрывателе всё работает.

Автор: OlegIT 6.3.2012, 09:27
По моему проблема внутри функции SDL_OpenAudioPath, не находит она директорию с драйверами. У меня в Linux, аудио драйвера находятся в /dev/snd, а в коде библиотеки таких путей нет. Пробовал их менять, но пока безуспешно.

Автор: kapbepucm 6.3.2012, 11:51
Сомневаюсь, что драйвера будут в /dev/snd. Там "файловое" представление ваших звуковых устройств.
А драйвер, на месте SDL, я бы искал в /usr/lib/libmp3lame.so*

Автор: OlegIT 6.3.2012, 12:20
Наверное я ошибаюсь в том, что «аудио драйвера находятся в /dev/snd», но ясно то, что путей прописанных в коде библиотеки нет на компьютере:

Цитата

az@oleg-it:~$ ls /dev
agpgart          loop2               sda1      tty18  tty42  ttyS0
block            loop3               sda2      tty19  tty43  ttyS1
bsg              loop4               sda5      tty2   tty44  ttyS2
bus              loop5               sdb       tty20  tty45  ttyS3
cdrom            loop6               sdb1      tty21  tty46  uinput
cdrw             loop7               sg0       tty22  tty47  urandom
char             lp0                 sg1       tty23  tty48  vcs
console          MAKEDEV             sg2       tty24  tty49  vcs1
core             mcelog              shm       tty25  tty5   vcs2
cpu_dma_latency  mem                 snapshot  tty26  tty50  vcs3
disk             net                 snd       tty27  tty51  vcs4
dri              network_latency     sndstat   tty28  tty52  vcs5
dvd              network_throughput  sr0       tty29  tty53  vcs6
dvdrw            null                stderr    tty3   tty54  vcs7
fb0              parport0            stdin     tty30  tty55  vcs8
fd               port                stdout    tty31  tty56  vcsa
full             ppp                 tty       tty32  tty57  vcsa1
fuse             psaux               tty0      tty33  tty58  vcsa2
fw0              ptmx                tty1      tty34  tty59  vcsa3
hidraw0          pts                 tty10     tty35  tty6   vcsa4
hpet             random              tty11     tty36  tty60  vcsa5
initctl          rfkill              tty12     tty37  tty61  vcsa6
input            root                tty13     tty38  tty62  vcsa7
kmsg             rtc                 tty14     tty39  tty63  vcsa8
log              rtc0                tty15     tty4   tty7   vga_arbiter
loop0            scd0                tty16     tty40  tty8   xconsole
loop1            sda                 tty17     tty41  tty9   zero


А в программе прописаны пути
Цитата

#ifndef _PATH_DEV_DSP
#if defined(__NETBSD__) || defined(__OPENBSD__)
#define _PATH_DEV_DSP  "/dev/audio"
#else
#define _PATH_DEV_DSP  "/dev/dsp"
#endif
#endif
#ifndef _PATH_DEV_DSP24
#define _PATH_DEV_DSP24    "/dev/sound/dsp"
#endif
#ifndef _PATH_DEV_AUDIO
#define _PATH_DEV_AUDIO    "/dev/audio"
#endif


           if ( ((stat("/dev/sound", &sb) == 0) && S_ISDIR(sb.st_mode)) &&


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)