Audio Stream

Streaming audio over internet using Icecast and Darkice on a Raspberry Pi 3 and RaspbianStretch.


Soundcard

check the soundcard:

$ cat /proc/asound/modules

and

$ cat /proc/asound/cards

that could look like that:

0 [ALSA           ]: bcm2835_alsa - bcm2835 ALSA
                    bcm2835 ALSA
1 [K6             ]: USB-Audio - Komplete Audio 6
                    Native Instruments Komplete Audio 6 at usb-3f980000.usb-1.5, high speed

The ALSA Card ID is 0 and the USB-Audio Card ID is 1

Identify the Soundcard Chip's Device ID

$ ls /proc/asound

gives:

ALSA  card0  card1  cards  devices  hwdep  K6  modules  pcm  seq  timers  version

means there are two sound cards 0 and 1

$ ls /proc/asound/card1

gives:

id  midi0  pcm0c  pcm0p  stream0  usbbus  usbid  usbmixer

Identify the device id:

$ cat /proc/asound/card1/pcm0c/info

give:

card: 1
device: 0
subdevice: 0
stream: CAPTURE
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

and:

$ cat /proc/asound/card1/pcm0p/info

gives:

card: 1
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

therefore in both cases the ID is 0.
Install ALSA utilities:

$ sudo apt-get update
$ sudo apt-get install alsa-utils

open ALSO mixer:

$ alsamixer

with F6 select the soundcard.
Test the Sound Card Output:

$ speaker-test -Dplughw:1,0 -c2 -tsine
$ speaker-test -Dplughw:1,0 -c2 -twav

Darkice

Install Darkice.
update:

$ sudo apt-get update 

get the files and install them:

$ wget https://github.com/x20mar/darkice-with-mp3-for-raspberry-pi/blob/master/darkice_1.0.1-999~mp3+1_armhf.deb?raw=true
$ mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb
$ sudo apt-get install libmp3lame0 libtwolame0
$ sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb

change config:

$ sudo nano /etc/darkice.cfg

to:

# this section describes general aspects of the live streaming session
[general]
duration      = 0                # duration of encoding, in seconds. 0 means forever
bufferSecs    = 2                # size of internal slip buffer, in seconds
reconnect     = yes              # reconnect to the server(s) if disconnected
# this section describes the audio input that will be streamed
[input]
device        = plughw:1,0       # Alsa soundcard device for the audio input
sampleRate    = 48000            # sample rate in Hz. try 48000, 96000 or 192000
bitsPerSample = 16               # bits per sample. try 16
channel       = 2                # channels. 1 = mono, 2 = stereo.
                                 # Only stereo mode is supported by pisound.
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections 
[icecast2-0]
bitrateMode   = cbr              # constant bit rate ('vbr' variable 'abr' average)
bitrate       = 128
format        = mp3              # format of the stream: mp3 ('vorbis' for OGG)
quality       = 0.8              # quality of the stream sent to the server (1.0 ist best)
server        = localhost        # host name of the server
port          = 8000             # port of the IceCast2 server, usually 8000
password      = ????????         # source password to the IceCast2 server
mountPoint    = pisound.mp3      # mount point of this stream on the IceCast2 server
name          = pisound          # name of the stream
description   = DarkIce on pisound # description of the stream
url           = http://localhost # URL related to the stream
genre         = hits             # genre of the stream
public        = no               # advertise this stream?
#localDumpFile = recording.mp3   # Record also to a file

Icecast

Install Icecast.
update:

$ sudo apt-get update

install icecast2:

$ sudo apt-get install icecast2

if asked type in hostname and password

hostname: localhost
password: ????

start icecast2:

$ sudo service icecast2 start

Stream

just run:

$ darkice 

and then open in your browser:

http://192.168.178.112:8000/pisound.mp3

Icecast2 Status one will find here:

http://192.168.178.112:8000