Jump to content
XPEnology Community
  • 0

захват звука с линейного входа (line audio capture)


nvrsk

Question

организовал на неделе трансляцию с HD-камеры в ютуб через FFMPEG (машинки, кораблики - красота!), и возникла мысль добавить к ней какой-нибудь звук, чтоб дополнительно "оживить" картинку. звук хочу принимать по линейному входу через тот же FFMPEG, и миксить с видеопотоком, который уже принимается с камеры. на машине какая-то втроенная звуковуха есть, но среди девайсов я ничего про "sound" найти не смог.

в аналогичных топиках пишут, мол, для вывода доступных устройств захвата надо запустить:

$ arecord -l

но это не работает (ash: arecord: command not found), ибо, как я понял, относится к ALSA (Advanced Linux Sound Architecture), а её необходимо как-то дюже сложно собирать.

 

подскажите, друзья, можно ли как-то с минимальными телодвижениями (чтоб без докеров всяких) снять звук с линии (пусть даже не со встроенной карты, а с какого-нить USB), и пропихнуть его в FFMPEG?
на "родном" syno-форуме подобные вопросы без ответов, а всякие другие посты про убунту/расп меня только глубже запутали, что я вообще не могу понять с какой стороны копать...

  • Like 1
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Там и останется пока Synology не сделает свою хранилку с такими возможностями. Сейчас они изначально отсутствуют в оригинале. Этот проект всего лишь попытка запустить DSM на своем железе.

Link to comment
Share on other sites

  • 0

вот тут - не соглашусь.

на сино народ всякие usb аудио-карты запускает же. и вроде даже сносно работает.

+ по логам загрузок у людей проскакивают в списках звуковые девайсы.

Link to comment
Share on other sites

  • 0

вобщем, докладываю:

пришла мне звуковая USB-карта c линией и микрофоном.

на выход звук через AudioStation выводится чудесно, причём не только через oss, но и через alsa

$ ./mplayer -ao help
MPlayer2 4d28f43 (C) 2000-2012 MPlayer Team
Available audio output drivers:
        alsa    ALSA-0.9.x-1.x audio output
        oss     OSS/ioctl audio output
        pulse   PulseAudio audio output
        null    Null audio output
        pcm     RAW PCM/WAVE file writer audio output

устройство захвата в драйверах вроде присутствует:

$ cat /proc/asound/devices
  0: [ 0]   : control
 16: [ 0- 0]: digital audio playback
 24: [ 0- 0]: digital audio capture
 33:        : timer

$ cat /proc/asound/cards
 0 [Device         ]: USB-Audio - USB PnP Audio Device
                      USB PnP Audio Device at usb-0000:00:1a.0-2, full speed

$ cat /proc/bus/input/devices
I: Bus=0003 Vendor=0c76 Product=161f Version=0100
N: Name="USB PnP Audio Device"
P: Phys=usb-0000:00:1a.0-2/input3
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.3/input/input2
U: Uniq=
H: Handlers=kbd event2 
B: PROP=0
B: EV=13
B: KEY=1 0 7800000000 e000000000000 0
B: MSC=10

дальше самое непонятное - пропихнуть что-нить с неё в ffmpeg.

поскольку все примеры в инете завязаны на утилтиту aplay (arecord), а сам я в никсах нуб - перебирал в слепую (по примерам) возможные варианты hw:0 / hw:0,1 / etc. - ffmpeg на всё это безобразие грязно ругался, значит для сино девайс надо указывать иначе.

полистал список устройств /dev, и обнаружил там audio4 !

и вот, по команде:

$ ./ffmpeg -y -f s16le -i /dev/audio4 /root/test.wav
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
...
Guessed Channel Layout for  Input Stream #0.0 : mono
Input #0, s16le, from '/dev/audio4':
  Duration: N/A, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
Output #0, wav, to '/root/test.wav':
  Metadata:
    ISFT            : Lavf56.36.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s
    Metadata:
      encoder         : Lavc56.41.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=    5602kB time=00:01:05.03 bitrate= 705.6kbits/s    
video:0kB audio:5602kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001360%

записался файл со звуком из линии!

осталось дело за малым - точно определить формат, в котором звук поступает.

изначально я отталкивался от:

$ cat /proc/asound/card0/stream0
USB PnP Audio Device at usb-0000:00:1a.0-2, full speed : USB Audio

Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 1 OUT (ADAPTIVE)
    Rates: 48000

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 2 IN (ASYNC)
    Rates: 48000

$ ./ffmpeg -formats | grep s16
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
...
 DE s16be           PCM signed 16-bit big-endian
 DE s16le           PCM signed 16-bit little-endian

может, формат s16le некорректен, и надо будет отыскать правильный из полного списка форматов, ибо звук получился в два раза медленней (по скорости и питчу) и монофонический, либо как-то жёстко прописать входящие параметры звука - это уже детали, главное, что журчит.

 

а вот второе - существенное: звук очень тихий.

а ввиду отсутствия миксера я немного в затруднении - как увеличить громкость capture device?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...