Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
project:audio_streaming [2016/08/31 21:15]
dron
project:audio_streaming [2016/09/01 00:49]
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 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 311: Line 355:
  
 ===== Poznámky ===== ===== Poznámky =====
- 
- 
- 
  
 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 366:
 </​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>​
Line 380: Line 376:
 alsa_input.pci-0000_00_1b.0.analog-stereo alsa_input.pci-0000_00_1b.0.analog-stereo
 </​file>​ </​file>​
- 
-<​code>​ 
-parec -d alsa_input.pci-0000_00_1b.0.analog-stereo --raw | ices /​etc/​ices.conf 
-</​code>​ 
- 
- 
- 
- 
- 
- 
- 
  
 ===== Links ===== ===== Links =====
  • project/audio_streaming.txt
  • Last modified: 2016/09/06 21:46
  • by dron