source-client_darkice

Error message

  • Deprecated function: Return type of DatabaseStatementBase::execute($args = [], $options = []) should either be compatible with PDOStatement::execute(?array $params = null): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2244 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseStatementEmpty::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 2346 of /home/nobi/www/drupal/includes/database/database.inc).
  • Deprecated function: Return type of DatabaseCondition::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in require_once() (line 1652 of /home/nobi/www/drupal/includes/database/query.inc).
  • Deprecated function: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in drupal_random_bytes() (line 2268 of /home/nobi/www/drupal/includes/bootstrap.inc).
  • Deprecated function: rtrim(): Passing null to parameter #1 ($string) of type string is deprecated in url() (line 2349 of /home/nobi/www/drupal/includes/common.inc).
  • Deprecated function: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in url_is_external() (line 2393 of /home/nobi/www/drupal/includes/common.inc).
  • Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in url_is_external() (line 2395 of /home/nobi/www/drupal/includes/common.inc).
  • Deprecated function: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in url() (line 2311 of /home/nobi/www/drupal/includes/common.inc).

 

4.3 Übertragungslösung bei Proton

4.3.1 Der Source-Client von Proton, 'darkice'

Bei Proton ist der Live-Feed lediglich ein Software-Modul. Die Anforderungen dafür sind:

  • Kompatibilität mit der Software 'jackd' Audio-Server; denn das Eingangssignal kann darüber abgegriffen werden

  • Zulieferung zum Streaming-Server 'icecast2' implementiert/ eingebaut. (Das ist der verwendete Streaming-Server, der im nächsten Kapitel genauer behandelt wird.)

Damit war die Auswahl sehr beschränkt, so dass die Wahl auf die gängige, leicht verfügbare Open-Source-Komponente fiel, die auch in den Debian-Paketquellen bereit liegt: 'darkice'.

Wie bei vielen Linux-Programmen üblich, gibt es bei 'darkice' eine Konfigurationsdatei, in der mit Texteinträgen Parameter gesetzt werden können. Diese wird beim Starten von 'darkice' in der Kommando-Zeile mit angegeben. Beim Hochstarten wird die hinterlegte Konfiguration angewandt. (Die verwendete Datei ist in der Anlage 'darkice.cfg; Konfigurationsdatei für Live-Feed SW 'Darkice'' zu finden.)

Bei Proton werden dem Server 3 Streams zugeliefert, die in der Konfigurationsdatei beschrieben sind:

    1. der Stream für die UKW-Sender

    2. ein Ogg-Stream mit einer guten Qualität für die Proton-Online-Hörer und

    3. ein MP3-Stream mit nicht der besten Qualität

    Der MP3-Stream ist für Hörer gedacht, die Probleme haben, den Ogg-Stream abzuspielen, weil ihr Endgerät bzw. die Abspiel-Software Ogg-Vorbis-Streams nicht unterstützt (wie z.B. das 'Terratec NOXON iRadio 460+'1 oder der Apple-eigene Audio-player iTunes2).

    Alle diese Zuliefer-Streams bleiben im Streaming-Rechner und werden an den dort eingerichteten Streaming-Server weiter gereicht. „Um den Rechner mit sich selbst kommunizieren zu lassen, wird ein virtuelles Interface, also eine Schnittstelle, die sich wie eine virtuelle Netzwerkkarte verhält, erstellt3 - bzw. ist das standardmäßig eingerichtet und muss nur noch adressiert werden. Diese Schnittstelle wird auch 'loopback-device' genannt. Die 'loopback-device'-Adresse ist 127.0.0.1 oder 'localhost'4; was somit auch die Zieladresse für den Live-Feed ist.

    [icecast2-0]
    # fuern internen Server - FETTER VERSORGUNSSTREAM
    format = vorbis
    bitrateMode = vbr # constant bit rate
    quality = 0.6
    maxBitrate = 206 # geht nur fuer ogg
    server = localhost 

    Beispiel aus der verwendeten 'darkice.cfg; Konfigurationsdatei für Live-Feed SW 'Darkice' ' (die vollständig in den Anlagen einzusehen ist; siehe unten ... :-)

     

    Anlage 8: darkice.cfg; Konfigurationsdatei für Live-Feed SW 'Darkice'

    # Das ist die verwendete Datei von 'Proton – das freie Radio' für die
    # Konfiguration von darkice;
    # Nicht alle Kommentare sind aktuell und zeitgemäß! ;-)
    
    # sample DarkIce configuration file, edit for your needs before using
    # see the darkice.cfg man page for details
    
    # this section describes general aspects of the live streaming session
    [general]
    duration = 0 # duration of encoding, in seconds. 0 means forever
    bufferSecs = 10 # Buffer-Speicher in Sec, von Soundkarte bis zum
    # Encoder
    reconnect = yes # soll sich wieder verbinden; ist aber eigentlich
    # eh default
    realtime = yes # Use POSIX realtime scheduling, "yes" or "no".
    # (optional parameter, defaults to "yes")
    
    # this section describes the audio input that will be streamed
    [input]
    device = jack # jack_auto to automatically make Jack connect
    # to the first source.
    sampleRate = 44100 # sample rate in Hz. try 11025, 22050 or 44100
    bitsPerSample = 16 # bits per sample. try 16
    channel = 2 # channels. 1 = mono, 2 = stereo
    jackClientName = StreamerDarkice
    
    # 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]
    # fuern internen Server - FETTER VERSORGUNSSTREAM
    format = vorbis
    bitrateMode = vbr # constant bit rate
    quality = 0.6
    maxBitrate = 206 # geht nur fuer ogg
    server = localhost # IP und Port
    port = 7998 # port of the IceCast2 server, usually 8000
    password = … # source password to the IceCast2 server
    mountPoint = fett.ogg # mount point of this stream on the IceCast2
    
    [icecast2-1]
    # fuer med-user
    format = mp3 # format of the stream: mp3
    bitrateMode = cbr # constant bit rate
    bitrate = 96 # bitrate of the stream sent to the server; 
    # GEAENDERT am 17.Maerz2014 von 64 (gespeichert 14Aug2012) auf 96
    server = localhost # IP und Port
    port = 7998 # port of the IceCast2 server, usually 8000
    password = … # source password to the IceCast2 server
    mountPoint = proton # mount point of this stream on the IceCast2
    # server
    # optional values fuer diesen Stream
    sampleRate = 44100 # fuer andere Werte als Input
    channel = 2 # fuer andere Werte als Input
    lowpass = 17500 # lame encoder filter settings, mit 0
    # defaults used
    # highpass = 400 # sinnlos, weil erst f ueber 500 Hz akivierbar
    name = Proton - das freie Radio # name of the stream
    description = oeffentlicher Stream von Proton - das freie Radio 
    # description of the stream
    url = http://www.radioproton.at # URL related to the stream
    genre = freies Radio | community radio # genre of the stream
    public = yes # advertise this stream?
    
    [icecast2-2]
    # fuer den med-user.net
    format = vorbis
    bitrateMode = vbr # constant bit rate
    quality = 0.3 # 86kbps =0.4, 91kbps=0.45, 83kbps=0.35, 0.3=80kbps, 0.2=70kbps
    maxBitrate = 160 # geht nur fuer ogg
    server = localhost # IP und Port
    port = 7998 # port of the IceCast2 server, usually 8000
    password = … # source password to the IceCast2 server
    mountPoint = protonquality.ogg # mount point of this stream on the IceCast2 
    # server
    # optional values fuer diesen Stream
    channel = 2 # geht nur fuer mp3s; fuer andere Werte als # Input
    name = Proton - das freie Radio # name of the stream
    description = Qualitaets-Stream von Proton - das freie Radio 
    # description of the stream
    url = http://www.radioproton.at # URL related to the stream
    genre = freies Radio | community radio # genre of the stream
    public = yes # advertise this stream?

     

    2 Vgl. https://xiph.org/quicktime/faq.html#faq_itunes_stream „Does XiphQT allow one to listen to ogg network streams in iTunes?“ , 2015-02-16

    3 http://www.informationsarchiv.net/articles/1117/ „Bedeutung der IP-Adresse 127.0.0.1“, 2015-02-16

    4 Vgl. http://www.informationsarchiv.net/articles/1117/ „Bedeutung der IP-Adresse 127.0.0.1“, 2015-02-16

    Add new comment