Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
project:audio_streaming [2016/08/31 21:15] dron |
project:audio_streaming [2016/09/06 21:46] dron |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Audio streming ====== | ====== Audio streming ====== | ||
+ | |||
+ | |**Project owner:**| [[user:dron]] | | ||
+ | |**Interested:** | | | ||
+ | |**Related:**| | | ||
+ | | **License:** | [[https://creativecommons.org/licenses/by-sa/3.0/|Uveďte původ-Zachovejte licenci CC BY-SA]] | | ||
Základní motivace tohoto projektu je realizace audio streamu ze stage do studia na jednom milém malém festivalu (Letní zvěř 2016). Nicméně tyto principy lze použít kdykoli na cokoli... | Základní motivace tohoto projektu je realizace audio streamu ze stage do studia na jednom milém malém festivalu (Letní zvěř 2016). Nicméně tyto principy lze použít kdykoli na cokoli... | ||
Line 20: | Line 25: | ||
* PC bazmek s line-out výstupem (příjem streamu) | * PC bazmek s line-out výstupem (příjem streamu) | ||
* mix | * mix | ||
- | * ...co dál? TODO... | + | * výstup z mixu je už streamován na skutečný stream server |
===== WiFi ===== | ===== WiFi ===== | ||
Line 40: | Line 45: | ||
==== Alsa sound ==== | ==== Alsa sound ==== | ||
+ | |||
+ | Tohle se bude týkat spíše varianty s RB Pi (a externí zvukovkou). | ||
+ | |||
+ | <code> | ||
+ | lsusb | ||
+ | lsmod | grep snd.usb.audio | ||
+ | </code> | ||
+ | |||
+ | Vypsání audio výstupů | ||
+ | |||
+ | <code> | ||
+ | aplay -l | ||
+ | </code> | ||
+ | |||
+ | Vypsání audio vstupů | ||
+ | |||
+ | <code> | ||
+ | arecord -l | ||
+ | </code> | ||
+ | |||
+ | Je potřeba si poznačit Card a Device numbers - alsa device ja pak označeno jako ''hw:Card,Device'' (např. ''hw:0,1''). | ||
+ | |||
+ | Nainstalujeme a připravíme config Ices (pozor na řádek ''<param name="device">hw:0,1</param>''). | ||
<code> | <code> | ||
Line 77: | Line 105: | ||
<param name="rate">44100</param> | <param name="rate">44100</param> | ||
<param name="channels">2</param> | <param name="channels">2</param> | ||
- | <param name="device">hw:0,0</param> | + | <param name="device">hw:0,1</param> |
<param name="periods">2</param> | <param name="periods">2</param> | ||
<param name="buffer-time">500</param> | <param name="buffer-time">500</param> | ||
Line 102: | Line 130: | ||
</file> | </file> | ||
+ | a spustíme ices | ||
+ | <code> | ||
+ | ices /etc/ices.conf | ||
+ | </code> | ||
==== Pulse audio ==== | ==== Pulse audio ==== | ||
+ | Situace spíše s plnotučnou moderní Linuxovou distribucí (např. Fedora). | ||
<code> | <code> | ||
Line 165: | Line 197: | ||
</file> | </file> | ||
+ | Nyní je potřeba zjistit, jaký source (vstup) budeme streamovat. Zajímá nás název source (druhý sloupec, např. ''alsa_input.pci-0000_00_1b.0.analog-stereo''). | ||
<code> | <code> | ||
- | parec -d streaming.monitor --raw | ices /etc/ices.conf | + | pactl list short sources |
</code> | </code> | ||
+ | Poznámka: Pokud má source příponu ''.monitor'', tak se jedná o monitor (odposlech) toho, co hraje na odpovídajícím výstupu. | ||
- | ==== Debug ==== | + | Poznámka: Pokud bychom chtěli posílat přímo výstup nějaké konkrétní, audio výstup produkující, aplikace, tak viz. [[https://wiki.archlinux.org/index.php/PulseAudio/Examples#Monitor_specific_output]] |
- | pactl stat | + | Ices nemá podporu přímo pro Pulseaudio, ale lze to obejít pomocí modulu stdinpcm a posíláním audia do stdin ices. |
- | pactl list | less | + | |
- | v nejake verzi asi tez | + | <code> |
+ | parec -d alsa_input.pci-0000_00_1b.0.analog-stereo --raw | ices /etc/ices.conf | ||
+ | </code> | ||
- | pactl list short sinks | + | ==== Debug ==== |
+ | <code> | ||
tail -f /var/log/ices/ices.log | tail -f /var/log/ices/ices.log | ||
+ | </code> | ||
===== Studio ===== | ===== Studio ===== | ||
Line 289: | Line 325: | ||
Stream je pak dostupný na lokální adrese a portu 8000 např. přes browser. | Stream je pak dostupný na lokální adrese a portu 8000 např. přes browser. | ||
+ | |||
+ | Tento setup stačí pro stremování audia mnoha dalším uživatelům - záleží na dosažitelnosti adresy icecast serveru. | ||
+ | |||
+ | Pokud chceme stream přehrát přímo na icecast serveru, pak např. utilitkou ogg123 (mpg123, mplayer,...) | ||
+ | |||
+ | <code> | ||
+ | ogg123 http://10.0.0.11:8000/letnizver.ogg | ||
+ | </code> | ||
==== Debug ==== | ==== Debug ==== | ||
Line 310: | Line 354: | ||
</code> | </code> | ||
- | ===== Poznámky ===== | + | ===== Poznámky ze Zvěře ===== |
+ | * Příště je potřeba dovézt uchozené a otestované kompletní řešení. Bastlit to na místě bylo mírně stresující... | ||
+ | * Reálně byl na stage použit malý NB s externí zvukovkou a streamerem BUTT. Problém byl s uchozením externí zvukovky na RbPi (aspoň v rámci časového presu - otestovat a dopsat TODO). | ||
+ | * WiFi fungovala bezproblémově, ale to se celkem čekalo, bylo to na cca 75m a přímou viditelnost ([[https://mapy.cz/s/12INt]]) | ||
+ | * Nakonec byl místo ogg streamu použit mp3 192kbit stream. Ogg se z neznámých důvodů dost sekal (streamer bylo RbPi, které se ale nakonec nepoužilo) | ||
+ | * Na stage běžel Icecast na RbPi a load minimální (ale reálně byl jen 1 klient, ). | ||
+ | * Z nouze byl mezi Icecastem a mixem ještě vetknutý můj notebook, který přijímal stream a hrál jej pomocí mpg123 na lokální zvukovce. | ||
+ | ==== tmp ==== | ||
Tohle je jen dočasný bordel z předchozího pokusu. Protřídit TODO... | Tohle je jen dočasný bordel z předchozího pokusu. Protřídit TODO... | ||
Line 325: | Line 375: | ||
</code> | </code> | ||
- | + | seznam sinku na starsi verzi pactl | |
- | + | ||
- | <code> | + | |
- | /etc/ices.conf | + | |
- | </code> | + | |
- | + | ||
- | <file> | + | |
- | <input> | + | |
- | <module>stdinpcm</module> | + | |
- | <param name="rate">44100</param> | + | |
- | <param name="channels">2</param> | + | |
- | <param name="metadata">1</param> | + | |
- | <param name="metadatafilename">/home/ices/metadata</param> | + | |
- | </input> | + | |
- | + | ||
- | + | ||
- | <instance> | + | |
- | <hostname>stream.slu.cz</hostname> | + | |
- | <port>8000</port> | + | |
- | <password>********</password> | + | |
- | <mount>/dron.ogg</mount> | + | |
- | <reconnectdelay>2</reconnectdelay> | + | |
- | <reconnectattempts>5</reconnectattempts> | + | |
- | <maxqueuelength>80</maxqueuelength> | + | |
- | <encode> | + | |
- | <nominal-bitrate>64000</nominal-bitrate> <!-- bps. e.g. 64000 for 64 kbps --> | + | |
- | <samplerate>44100</samplerate> | + | |
- | <channels>2</channels> | + | |
- | </encode> | + | |
- | </instance> | + | |
- | </file> | + | |
- | + | ||
- | + | ||
- | spustit paman, Devices, najit odpovidajici sink, dat Properties, a zkopirovat si radek Monitor Source. | + | |
- | + | ||
- | pak tento source preposleme do ices (a ten to enkodne a posle do icecastu) | + | |
- | + | ||
- | <code> | + | |
- | parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor --raw | ices /etc/ices.conf | + | |
- | </code> | + | |
- | + | ||
- | <code> | + | |
- | yum install pulseaudio-utils paman ices icecast | + | |
- | </code> | + | |
- | + | ||
- | seznam sinku | + | |
<code> | <code> | ||
LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d " " -f2 | LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d " " -f2 | ||
</code> | </code> | ||
- | |||
- | <file> | ||
- | alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | ||
- | alsa_input.pci-0000_00_1b.0.analog-stereo | ||
- | </file> | ||
- | |||
- | <code> | ||
- | parec -d alsa_input.pci-0000_00_1b.0.analog-stereo --raw | ices /etc/ices.conf | ||
- | </code> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
===== Links ===== | ===== Links ===== |