De Linux MP3-HOWTO

Door Phil Kerr, phil@plus24.com
Vertaler: Reggy Ekkebus, reggy@zeelandnet.nl

v1.40, April 2000


Dit document beschrijft de hardware, software en procedures benodigd om MP3 sound files te encoderen, afspelen en streamen onder Linux.

1. Introductie.

Dit document beschrijft de hardware, software en procedures benodigd om MP3 sound files te encoderen, afspelen en streamen onder Linux.

Het houdt in:

MP3's encoderen van een live of externe bron.

MP3's encoderen van audio cd's.

MP3's streamen over het netwerk.

MP3's beluisteren.

MP3's mixen

2. Copyright van dit document.

Deze HOWTO is auteerusrechtelijk beschermd. Copyright 2000 Phil Kerr.

Tenzij anders verklaard, berust het copyright van Linux Howto documenten bij de eigenlijke auteur. Linux Howto documenten mogen worden gereproduceerd en gedistributeerd in het geheel of gedeeltelijk, in elk medium fysiek of elektronisch zolang de copyright-vermelding op elke kopie blijft staan. Commercieële redistributie is toegestaan en wordt aangemoedigd; hoewel de auteur hier wel van op de hoogte gebracht wil worden.

Alle vertalingen, afgeleide werken of verzamelde werken waarbij een Linux Howto is betrokken moeten uitgebracht worden onder dit copyright. Dat houdt in dat je geen afgeleid werk van een Howto mag maken en daar enkele restricties op zetten. Uitzonderingen op deze regels kunnen gemaakt worden onder bepaalde voorwaarden; neem contact op met de Linux Howto co-ordinator op het adres hieronder gegeven.

In het kort, we moedigen verspreiding van deze informatie aan door zoveel mogelijk kanalen. Hoewel, we wel willen dat het copyright op elk document blijft, en we willen op de hoogte gebracht worden van elke herdistributie van de HOWTO's.

Als je vragen hebt, neem dan contact op met Tim Bynum, De Linux HOWTO co-ordinator, op linux-howto@metalab.unc.edu via email.

3. Waar kun je dit document halen?

De meest recente officiële versie van dit document kan verkregen worden van het Linux Documentation Project http://http://www.linuxdoc.org/.

De homepage voor deze HOWTO is: http://www.mp3-howto.com

3.1 Vertalingen

Deze HOWTO is vertaald in de volgende talen:

Onthoud dat de vertalingen van dit document verouderd kunnen zijn, het vertalen vergt tijd.

Koreaans

http://kldp.org/HOWTO/MP3-HOWTO Door Lee,So-min <animator@nownuri.net>

Frans

http://www.freenix.org/unix/linux/HOWTO/MP3-HOWTO.html Door Arnaud Gomes-do-Vale <arnaud@carrosse.frmug.org>

Hongaars

http://free.netlap.hu/howto/MP3-HOGYAN.html Door Andras Timar <atimar@itp.hu>

Italiaans

ftp://ftp.pluto.linux.it/pub/pluto/ildp/HOWTO/MP3-HOWTO Door Mariani Dario <darkpand@uni.net>

Spaans

http://www.insflug.org/documentos/MP3-Como Door Arielo larocka@yahoo.com

Japans

http://www.linux.or.jp/JF/JFdocs/MP3-HOWTO.html By Saito Kan <can-s@geocities.co.jp>

Veel dank aan de vertalers hierboven. Als je deze HOWTO kunt vertalen, stuur de auteur dan een mailtje. Geef ook de URL waar de vertaling staat.

4. Erkentenis.

Bij het schrijven van deze HOWTO heb ik veel gehad aan de Sound-HOWTO door Jeff Tranter, en de Sound-Playing-HOWTO door Yoo C. Chung.

Ook dank aan de andere HOWTO auteurs waar ik het werk van gebruikt heb:

Linux System Administrators Guide door Lars Wirzenius.

Linux Network Administrators Guide door Olaf Kirch.

Multi Disk System Tuning HOWTO door Stein Gjoen.

En ook veel dank aan de mensen die mij feedback, commentaar of fout rapporten hebben gestuurd.

Speciale dank aan al mijn collega's van het WebSentric AG, speciaal Mark S. Fischer & Peter Conrad voor hun commentaar, feedback en hulp.

5. Disclaimer.

Gebruik de informatie in dit document op eigen risico.

Ik weiger elke soort van aansprakelijkheid voor dit document.

Gebruik de concepten, voorbeelden en andere inhoud in dit document op eigen risico

Alle copyrights zijn eigendom van hun eigenaren, niet als het speciaal is aangegeven

Het gebruik van een term in dit document moet niet gezien worden als een bestaand handels of service merk.

Namen van particuliere producten of merken moeten niet gezien worden als bekrachtiging.

Je wordt ten sterkste aangeraden om een backup te maken van je systeem voor de echte installatie op verschillende tijden.

6. Hardware Vereisten & Performance onderwerpen.

Digitaal audio verwerken is een bron intensieve taak die zwaar steunt op de processor en I/O capaciteiten van je systeem. Ik raad een minimum van een Pentium Soort computer aan.

Als je gaat encoderen van een analoge audio bron via de line-in of microfoon, geeft een PCI geluidskaart het beste resultaat. De I/O uitvoering tussen een ISA en PCI kaart zijn aanmerkelijk, 132 MBytes/sec voor PCI (getal genomen uit de PCI-HOWTO). Natuurlijk, hoe beter de kwaliteit van de geluidskaart in termen van z'n signal-to-noise ratio, hoe beter het geencodeerde MP3tje. Ik gebruik de Soundblaster PCI128 en ben net overgestapt op een Soundblaster Live Value; beide kaarten geven goede audio performance, maar Live heeft aanmerkelijk betere S/N rations, goed genoeg voor semi-pro audio werk. Onthoudt: de oude date verwerkings grondstelling:- vuilnis in - vuilnis uit!

Creative heeft een Beta driver voor de Soundblaster Live! die hier gedownload kan worden van:

http://developer.soundblaster.com/linux/

Als je analoge audio opneemt naar je Hard disk, meestal direct to disk of d2d opnemen, is de performance van de disk en zijn interface kritiek. Als je een IDE gebaseerd systeem gebruikt, mode 4 of UDMA is dat goed genoeg. Als de overdrachts snelheid hoog genoeg is, gaat de overdracht zonder veel problemen.

De ideale oplossing zou een SCSI gebaseerd systeem zijn, omdat de drives en interface een veel snellere doorstroom hebben, van 5 mbits/sec voor SCSI 1 tot 80 mbits/sec voor utra/wide SCSI. Ide tot iets van 8.3 MB/s tot 33 MB/s voor Ultra-ATA maar deze snelheden zijn pieken, meestal zijn de transfers langzamer. Als je er een kan vinden of betalen, een AV SCSI drive, neem er dan een. AV drives hebben de lees/schrijf head geoptimaliseerd voor continu data overdracht; andere SCSI en IDE drives kunnen normaal geen continu datastroom aan als de schrijf hoofden warm worden!

Natuurlijk een drive met cache geeft nog konsekwenter resultaat dan een die dat niet heeft, cache werkt als een buffer als de kop oplicht of de stroom het even niet aan kan.

Als je drive niet van deze specificaties is, zal de opname lijden onder de uitval en lichte storingen, waar de drive gefaald heeft om het signaal op te nemen. Als je aan-uit evenementen opneemt, zoals live uitvoeringen, investeer dan in een goed SCSI systeem.

Een andere oorzaak van d2d uitval is een zwaar beladen systeem. Achtergrond taken kunnen tijdelijke storingen veroorzaken. Het is aan te raden zo min mogelijk achtergrond taken te draaien, vooral netwerk gebaseerde taken. Voor meer informatie over setup scripts en over het instellen van netwerk services zie de SAG en NAG gidsen.

Virtueel geheugen veroozaakt ook lichte storingen, dus draai met zoveel mogelijk intern geheugen, Ik raad op z'n minst 32 MB aan, maar nog meer is beter.

Voor de mensen die het meest uit hun systeem willen halen, kan de kernel optimaliseren geen kwaad.

Zolang de hardware specificatie hierboven je een bescheiden systeem geven om audio data te encoderen, weiger niet oudere te gebruiken.

Het kan een goede uitdaging voor sys-admin zijn om een laag gespecifeerd systeem een goed resultaat te geven, en het einde kan zijn een gelukkigere Linux box.

Een andere belangrijk onderwerp is de audio bekabeling. Goedkope, slechte kwaliteits kabels en verbinders resulteren in een slechte opname kwaliteit. Als je geluidskaart de optie biedt voor een hoofdtelefoon, soms aangegeven als RCA, connectors, gebruik ze dan. Goud geplateerde contacten helpen ook de audio kwaliteit behouden; houd ook audio kabels uit de buurt van data kabels: er is kans van storing.

Maar vergeet niet, een fortuin spenderen aan de beste audio bekabeling is verspilling als de rest van je systeem niet geoptimaliseerd is.

Voor het opnemen van Mp3's van CD-ROM, zal de tijd dat het duurt bepaald worden door type en snelheid om de ruwe data eraf te lezen. Een single speed drive is veel te traag zelfs voor de geduldigste.

Je cd-rom moet aangesloten zijn op je geluidskaart als je wilt horen wat je opneemt, door de interne connector of door de hoofdtelefoon aan te sluiten op de cd-rom. Je kan geen Mp3 luisteren door de hoofdtelefoon connector van de cd-rom!

Voor gedetailleerde instructies over het instellen van je geluidskaart, lees je de Sound-HOWTO.

7. Software Vereisten.

Audio converteren naar MP3's is normaal een 2 stappen proces, eerst de audio opnemen als Wav en dan de Wav converteren naar een MP3. Sommige tools doen beiden in een keer voor je.

Het formaat waarvan je audio wilt encoderen, CD of direct audio, geeft aan met welke tool je Wav's moet maken.

Als je wilt encoderen van audio input heb je een tool nodig dat opneemt vanaf de geluidskaart input en die dit omzet in Wav formaat. Hieronder staan een aantal handige programmaatje's. (Het meeste commentaar is van de web site van het programma).

7.1 Rippers & WAV Recorders

Om te grabben van analoog audio line-in: Wavrec

Waverec is gedistributeerd als deel van wavplay, welke te downloaden is van:-

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/

Om Cd audio data te converteren naar Wav, soms bekends als Cd ripping:

CDDA2WAV

http://metalab.unc.edu/pub/Linux/apps/sound/cdrom/

Cdparanoia

Cdparanoia is een Compact Disc Digital Audio extraction tool, vaak bekend op het net als een 'ripper'. De applicatie is gebouwd op de Paranoia bibliotheek, die het echte werk doet (de Paranoia bron code is opgenomen in de Cdparanoia source distributie). Net als de originele cdda2wav, leest Cdparanoia package audio van de Cd direct als data, zonder een analoge stap ertussen en schrijft de data naar een file of pipe in Wav, Aifc of raw 16 bit linear PCM. In tegenstelling to cdda2wav is het veel trager maar het geeft een beter resultaat zelfs als er krassen en moeilijke stukjes op de cd zitten.

http://www.xiph.org/paranoia/index.html

RipperX

RipperX is een GTK programma om Cd audio te rippen en mp3s te encoderen. Het heeft plug-ins voor Cdparanoia, BladeEnc, Lame MP3 encoder, XingMp3enc, lame en de Iso v2 encoder. Het heeft ook support voor Cddb en id3 tags.

http://www.digitallabyrinth.com/linux/ripperX/

Grip

Grip is een GTK gebaseerde CD spelen en CD-ripper/MP3-encoder. Het heeft de rip mogelijkheden van cdparanoia ingebouwd, maar het kan ook een externe ripper gebruiken (zoals cdda2wav). Het heeft ook een geautomatiseerd frontend voor MP3 encoders, het laat je een cd pakken om deze gelijk in MP3s om te zetten. Het CDDB protocol wordt ook ondersteund om track informatie van disc database server te ontvangen. Grip werk met DigitalDJ om een "gecomputeriseerde" versie van je muziek collectie aan te bieden.

7.2 Encoders

Om Wav om te zetten in Mp3 heb je een encoder nodig:

Blade's MP3 Encoder

BladeEnc is een gratis Mp3 encoder. Het is gebaseerd op de zelfde ISO compressie routines als mpeg3enc, dus je kan ruwweg de zelfde, of betere kwaliteit verwachten. Het hoofd verschil is het optreden en de snelheid. BladeEnc heeft geen mooi, gebruikers vriendelijk interface net als mpegEnc, maar het is meer dan 3 keer sneller en het werkt met populaire front-end graphical user interfaces.

http://bladeenc.cjb.net

Lame

In de grote historie van Gnu namen, staat Lame voor Lame Ain't an Mp3 Encoder. Lame is geen mp3 encoder. Het is een Gpl'd patch van de dist10 ISO demonstratie source. Lame is totaal ongeschikt voor het maken van mp3 stream. Het is ongeschikt voor het compileren van zichzelf. Je moet de ISO source hebben om deze software te laten werken. De ISO demonstratie source is ook gratis verkrijgbaar, maar enkel commercieel gebruik heeft een licentie agreement nodig van Fhg (Fraunhofer Gesellschaft, Duitsland).

http://www.sulaco.org/mp3/

Gogo

Gogo is een zeer snelle MP3 encoder voor x86-CPU, die gebaseerd is op LAME versie 3.29beta en geoptimaliseerd door PEN@MarineCat, Keiichi SAKAI, URURI, kei en shigeo. (Je moet NASM downloaden om de source te compileren, die te vinden is op http://www.web-sites.co.uk/nasm/).

http://homepage1.nifty.com/herumi/gogo_e.html

7.3 Spelers

Om MP3's af te spelen moet je natuurlijk een speler hebben:

Xmms (Formeel bekend als X11Amp)

Deze speler heeft de meeste eigenschappen die Winamp (Windows 95/98/NT) ook heeft, maar het heeft ook eigenschappen die alleen in Linux beschikbaar zijn.

http://www.xmms.org

Xaudio

Xaudio is een zeer snelle en zeer robuuste Multi-platform oplossing voor Digitaal Audio afspelen, vooral gericht op MPEG (MP1, MP2 en MP3) decoderen.

http://www.xaudio.com

AlsaPlayer

Alsaplayer is een nieuw type van PCM speler. Het is zwaar multi-threaded en probeert de ALSA bibliotheek te gebruiken om een beetje te draaien. Het heeft zeer interessante eigenschappen uniek voor Linux/Unix spelers. Het doel is om een volledig pluggable framework voor playback te maken voor alle soorten media met de focus op PCM audio data. Full speed (pitch) control, positief *en* negatief! Eerst Linux- alleen GPL player dat doet het!! MP3's en CD's doen verschillende snelheden :)

http://www.alsa-project.org/~andy/

mpg123

Wat is mpg123? Het is een snelle, gratis en portable MPEG audio speler voor Unix. Het bied ondersteuning voor MPEG 1.0/2.0 layers 1, 2 en 3 (de beroemde "mp3" files) en het is getest op een paar zeer verschillende platformen, onder andere Linux, FreeBSD, NetBSD, SunOS, Solaris, IRIX, HP-UX en andere. Om Cd kwaliteit mp3's af te spelen, is een Pentium (of snelle 486), SPARCstation10, DEC Alpha of zo'n soort CPU nodig. Mono en/of gereduceerde kwaliteit afspelen (22 kHz of 11 kHz) is zelfs mogelijk op langzamere 486 CPUs.

http://dorifer.heim3.tu-clausthal.de/~olli/mpg123/

Freeamp

FreeAmp is een uitbreidbare, cross-platform audio speler. Het is een geoptimaliseerde versie van de GPLed Xing MPEG decoder welke het een van de snelste en beste geluids spelers verkrijgbaar maakt. FreeAmp heeft een aantal van de belangrijkste eigenschappen, gebruikers kommen in een makkelijke en vriendelijk interface.

http://www.freeamp.org/

7.4 Streaming Servers

Streaming servers stellen je in staat om MP3's te 'rond te sturen' over het netwerk, dit kan je intranet zijn of het internet.

Icecast

Welkom! Icecast is een Mpeg Layer III Audio broadcasting system het the linuxpower.org team. Icecast komt gebundeld met iceplay en icedir. iceplay is een playlist streamer die je in staat stelt geencodeerde files te zenden naar je icecast server.

http://www.icecast.org/

Fluid

Fluid Streaming Server is een programma voor het streamen van media over netwerken, nu gebruikt het het mp3 formaat.

http://www.subside.com/fluid/ (oude site) http://fluid.sourceforge.net/ (nieuwe site)

7.5 Mixen

LiveIce

LiveIce is de source client voor Icecast wat een mpeg stream encodeerd voor broadcast. Niet als clienten als Shout en IceDJ staat dit het uitzenden van live audio toe, anders dan voorgeencodeerde mp3's.

Live is gebundeld met Icecast, nieuwere versies samen met documentatie kan gevonden worden op de website hieronder:

http://star.arm.ac.uk/~spm/software/liveice.html

eMixer

eMixer is een makkelijk te gebruiken front-end voor mpg123 dat je in staat stelt twee mp3 streams samen te mixen. De mogelijk heid twee mp3's te mixen maakt eMixer een soort cross-fader, dit geeft de gebruiker DJ mogelijkheden voor de computer. eMixer is er goed voor in een "real time" party omgeving. eMixer is gebaseerd op de originele mix code waar liveice met werkt.

http://emixer.linuxave.net/

7.6 Misc

Volume normalisatie

Wavnorm

Als je live audio hebt ge-encodeerd, of je hebt van oudere cd's geencode, kun je variaties vinden in het algemene geluids niveau.

Om het geencode volume niveau van MP3's te veranderen moet je ze normaliseren met wavnorm.

http://www.zog.net.au/computers/wavnorm/

Sox is een erg handig sound conversie tooltje welke is aan tebevelen en je hebt het nodig als je wav norm wilt gebruiken.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/

Je hebt misschien ook een mixer programma nodig; Xmixer werk goed en is meegeleverd met de meeste distributies.

8. Je systeem instellen.

Deze sectie zal de basis instellingen van je linux systeem beschrijven die je nodig hebt om audio analoog of van Cd-rom op te nemen.

Ik baseer deze sectie op mijn Intel gebaseerd Linux systeem welke Redhat draait, maar het zou distributie neutraal moeten zijn. Ik heb kort op de Sparc platform versie gewerkt. (als je succes hebt gehad met andere hardware dan in deze HOWTO geef het dan door).

Natuurlijk een logische noodzakelijkheid is een werkende geluidskaart. Op dit punt is het een goed idee om de Linux Sound HOWTO, door Jeff Tranter te lezen. En daarna kun je de Linux Sound Playing HOWTO, door Yoo C. Chung lezen. Beide van de hierboven vermelde howto's vertellen de details van het aan de praat kijgen van een sound systeem onder Linux veel beter dan ik dat kan doen.

8.1 Instellen voor Analoge Geluids opname

Stel eerst je audio in. Er zijn heel veel wegen om je audio te routeren voordat het in je Linux box komt, enkele algemene zijn:

Line out naar geluidskaart Line in. De meeste audio apparaten hebben een Line out. Line level is een standaard die aan geeft welke voltage het audio apparaat zend. Als ik me goed herinner is dat 500mV voor huishoudelijke en Semi-Pro apparaten, en 750mV voor Pro audio apparaten. Ik denk dat de standaard voor de meeste geluids kaarten op 500mV staat, maar sommige van de nieuwere Pro audio kan op de hogere standaard staan. Het zou niet veel verschil moeten maken, tenzij je op de hogere kanalen gaat openen.

De line level output wordt normaal gebruikt om HIFI uitrusting aan te sluiten op een amplifier, zodat dingen als een cassettedeck, Radio tuner, CD speler, Dat machines en Mini-Disc spelers zonder problemen kunnen worden aangesloten. Draai-tafels kunnen een groter probleem zijn, zie hieronder voor meer informatie.

Je kan ook audio van Video's opnemen. De meeste Video's hebben een Line out voor geluid, of je kan een line out hebben voor een Scart kabel als je video er een heeft.

Amplifier Tape out naar geluidskaart Line in, geluidskaart Line out naar Amplifier Tape in. Deze configuratie vervangt essentieel het traditionele cassettedeck verbonden aan je HIFI amplifier met je Linux systeem. De geluidskaart Line out naar de Tape in staat het nagaan van het opneem niveau toe.

Microfoon naar geluidskaart Microfoon in. De voltages gegenereerd door microfoons is veel kleiner dan de voltages gebruikt bij een Line level device. Als je een Microfoon in je Geluidskaart Line in plugt, heb je kans dat je helemaal niets opneemt.

WAARSCHUWING: een line device in je geluidskaart microfoon in pluggen kan schade aan je geluidskaart veroorzaken!!

Draaitafel in microfoon in.

Veel dank aan Mark Tranchant voor het volgende.

De ruwe uitvoer van een record deck cartridge is op een erg laag niveau. Hoewel, je het niet direct in je microfoon in kunt pluggen en dan een goed resultaat verwachten. De output heeft equalizatie nodig, als opnamen zijn gedaan met weinig bass en veel treble om de fysica van de bewegende naald te verbeteren. Deze equalizatie wordt nauwkeurig beschreven en verwezen als RIAA equalizatie. Je *moet* de uitvoer door een microfoon pre-amp draaien, en dan in de line in.

Keyboards en synths moeten worden aangesloten op de Geluidskaart in, met gitars verboden aan de Line in via DI (Direct Injection, gebruikt om het signaal te converteren naar Line niveau) box.

Voordat je alles in je geluidskaart plugt, weet dan zeker dat het volume niveau geminimaliseerd is, of als je een microfoon gebruikt dat hij uit of weg van de speakers is.

8.2 Je CD-rom instellen voor het opnemen van audio

Je Linux systeem instellen voor het opnemen van audio data van CD-ROM is redelijk gemakkelijk.

Als je een track kan horen spelen van je CD-ROM door je speakers of amplifier, verbonden met je geluidskaart, dan is er een goede kans dat je het er van kan opnemen.

8.3 Extra setup

Login als normaal op je systeem, dan kun je door het gebruik van een mixer programma het opname niveau regelen tot deze luid genoeg is, om je een bescheiden opname niveau te geven, maar niet te luid en vervormd. Ik doet dit normaal met het oor, na een tijdje weet je welk niveau het beste is voor jouw kit.

Ik raad aan om alle onnodige services uit te zetten of switchen naar het 1ste runlevel, vooral bij het encoden van een audio bron. Dit is om zeker te weten dat het minimale aantal diensten draait en dus systeem obstakels minimaliseerd zijn tijdens het opnemen.

Ik heb een aparte SCSI disk geinstalleerd, exclusief om de audio naar op te nemen, die ik aangeef als /mp3. Dit heb ik speciaal gedaan voor de performance winst bij het gebruik van een SCSI drive. Ook, opnemen op een speciale drive, waar je bijna zeker van weet dat de kop niet ineens naar een ander deel van de drive gaat als je er audio data naartoe schrijft, dat is een goed idee :)

Voor de details van het instellen van een Linux systeem met meerdere schijven, kun je de Multi-Disk-HOWTO, door Stein Gjoen lezen.

9. Audio encoden.

Eerst, weet zeker dat je genoeg ruimte hebt op je schrijf. Op CD kwaliteit, 44.1 Khz 16 Bit stereo, is 1 minuut bijna 10 Mb (5 MB per kanaal).

Ik neem normaal op met DAT kwaliteit op, wat 48 Khz 16 Bit stereo is.

Als ik wavrec gebruik, gebruik ik het volgende commando:

/usr/local/bin/wavrec -t 60 -s 48000 -S /mp3/temp.wav

Het eerste deel is het volledige path naar wavrec. De '-t 60' specificeert de lengte van tijd om op te nemen, in seconden.

De derde optie, -s 48000 geeft de sample rate aan in samples/sec. (48000 is het geval bij DAT, 44100 is CD)

De laatste optie is het path naar de output file.

Om het volledige aantal opties te zien, draai waverec -help, of kijk in z'n man page.

Dit produceert een WAV file. Daarna moet je deze encoden naar MP3.

Gebruik Bladeenc met het volgende commando:

/usr/local/bin/bladeenc [bron file] [uitvoer file] -br 256000

De -br optie stelt de bit rate in, in dit geval heb ik de bit rate op maximaal gezet 256k bits/s. Het path naar bladeenc kan ook anders zijn op je systeem dan degene die ik heb gebruikt.

Om het volledige aantal opties te zien, draai dan 'bladeenc -help', eigenlijk is dit een verkeerde optie, maar laat de lijst van opties wel zien.

Dezelfde encoding maar dan met Lame (net als met Gogo omdat het erop gebaseerd is), geeft het volgende commando:

/usr/local/bin/lame [bron file] [uitvoer file] -b 256

10. Encoderen van CD-ROM.

Op dezelfde manier als encoden van audio, is encoderen van CD een 2 stappen proces. Eerst de audio data van de cd afhalen en converteren naar een wav file. En dan de wav file naar MP3 converteren.

Er zijn 2 types encoders, console gebaseerd en X gebaseerd. Beiden doen het zelfde, maar de X gebaseerde zijn makkelijker te gebruiken (en zien er leuker uit).

Weer, voordat je begint met encoderen, kijk of je genoeg harde schrijf ruimte hebt op je systeem.

10.1 Command Line encoderen

Ik heb een zeer simpel Perl script geschreven dat tracks van een Cd zal rippen en encoderen.


#!/usr/bin/perl

if ($ARGV[0] ne "") {

$count = 1;

do {
 
$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");
$track = "$ARGV[1]/track".$count.".mp3";
$enc = system("bladeenc  /mp3/cdda.wav $track -br 256000");
$count++;

}
until $count > $ARGV[0];
exit;
}

else {
print "Usage cdriper [no of tracks] [destination directory]\n\n";
}

Onthoud: Het script hierboven is erg basic en heeft niks moderns, zoals error checking. Verbeter als je wilt. :)

De belangrijkste regels zijn:


$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");

Deze regel roept de CD ripper, cdparanoia aan. Cdparanoia converteert ruwe CD audio data in het Wav formaat.

Ik gebruik Cdparanoia, maar als je CDDA2Wav wilt gebruiken zou het commando zo moeten zijn:


$cdcap = system("cdda2wav", $count, "/mp3/cdda.wav");

De opvallenste opties zijn $count, welke het nummer van de track om te rippen is, en dan het path voor de uitgevoerde Wav file. In mijn voorbeeld gaat dit door een tmp directory op mijn MP3 SCSI disk.

De Wav file wordt geconverteerd naar MP3 door het gebruik van BladeEnc.

Ik heb het Perl script geschreven om te voorkomen dat je elke track apart moet encoderen en rippen, en zodat je de batch mode van Cdparanoia niet nodig hebt. Dit vermindert het aantal benodigde vrije Mb's, omdat Cdparanoia een hele Cd in een keer ript, en dit neemt tot 600 MB.

Als je Lame of Gogo wilt gebruiken, verander de encoder regel dan naar:


$enc = system("lame  /mp3/cdda.wav $track -b 256");

of
$enc = system("gogo  /mp3/cdda.wav $track -b 256");

Hier is een dump van de verkrijgbare opties voor elke encoder.

BladeEnc


BladeEnc 0.91    (c) Tord Jansson          Homepage: http://bladeenc.mp3.no
===============================================================================
BladeEnc is free software, distributed under the Lesser General Public License.
See the file COPYING, BladeEnc's homepage or www.fsf.org for more details.

Usage: bladeenc [global switches] input1 [output1 [switches]] input2 ...

General switches:
  -[kbit], -br [kbit]  MP3 bitrate instellen. Standaard is 128 (64 voor mono uitvoer).
  -crc                 checksum data in MP3 file steken.
  -delete, -del        Sampel verwijderen na succesvol encoderen.
  -private, -p         Stel de private flag in de uitvoer file in.
  -copyright, -c       Stel de copyright flag in de uitvoer file in.
  -copy                Verwijdert de originele flags in de output file.
  -mono, -dm           Produceer een mono Mp3 door de stereo kanalen te combineren.
  -leftmono, -lm       Produceer een mono Mp3 van het linker stereo kanaal.
  -rightmono, -rm      Produceer een mono Mp3 van het rechter stereo kanaal
  -swap                Swap het linker en rechter stereo kanaal.
  -rawfreq=[freq]      Specificeer de frequentie van Raw samples. Standaard is 44100.
  -rawbits=[bits]      Specificeer de bits per kanaal voor Raw samples. Standaard is 16
  -rawmono             Specificeer dat de Raw samples mono zijn en niet stereo.
  -rawstereo           Specificeer dat de Raw samples stereo zijn. (standaard).
  -rawsigned           Specificeer dat de Raw samples gesigneerd zijn. (standaard).
  -rawunsigned         Specificeer dat de Raw samples niet gesigneerd zijn.
  -rawbyteorder=[order]Specificeer byteorder van Raw samples, LITTLE of BIG.
  -rawchannels=[1/2]   Specificeer het aantal kanalen voor Raw samples. doet hetzelfde
                       als -rawmono en respectivelijk -rawstereo.

Globale instellingen:
  -quit, -q            Quit zonder te wachten op een toetsdruk als het klaar is.
  -outdir=[dir]        Sla Mp3's op in gespecificeerde directory.
  -quiet               Het scherm uitvoer uit.
  -nocfg               Haal geen instellingen ui configuratie file.
  -prio=[prio]         Zet de taak prioriteit voor BladeEnc. Goede instellingen zijn
                       HIGHEST, HIGHER, NORMAL, LOWER, LOWEST(standaard) en IDLE
  -refresh=[rate]      Refresh rate voor de progress indicator. 1=snelst, 2=normaal.
  -progress=[0-8]      Welke programma indicator gebruiken. 0=Uit, 1=Standaard.

Input/output files kunnen worden verplaatst met STDIN en STDOUT.

Lame


LAME version 3.50 (www.sulaco.org/mp3) 
GPSYCHO: GPL psycho-acoustic model version 0.74. 

USAGE   :  lame [options] <infile> [outfile]

<infile> and/or <outfile> can be "-", which means stdin/stdout.

OPTIONS :
    -m mode         (s)tereo, (j)oint, (f)orce of (m)ono  (standaard j)
                    force = force ms_stereo op alle frames. Snelst en
                    gebruikt speciale Mid en Side masking schaal
    -b <bitrate>    stel de bitrate in, default 128kbps
                    (voor VBR, dit stelt de toegestaan minimale bitrate in)
    -s sfreq        sampling frequency van input file(kHz) - standaard 44.1
  --resample sfreq  sampling frequency van output file(kHz)- standaard=input sfreq
  --mp3input        input file is een MP3 file
  --voice           expirimentele geluids mode.

    -v              gebruik variabele bitrate (VBR)
    -V n            qualiteits instelling voor VBR. standaard n=4
                    0=hoogste qualiteit,grotere files. 9=kleinere files
    -t              schakel Xing VBR informatie tag uit
    --nohist        schakel VBR histogram weergave uit

    -h              gebruik (misschien) betere kwalatiet improvements
    -f              snele mode (lage kwaliteit)
    -k              schakel sfb=21 cutoff uit
    -d              sta toe dat kanalen verschillende blocktypes hebben 
  --athonly         gebruik alleen de ATH voor masking

    -r              input is raw pcm
    -x              forceer byte-swapping van input
    -a              downmix van stereo naar mono file voor mono encoderen
    -e emp          de-emphasis n/5/c  (verouderd)
    -p              fout protectie. Voegt 16bit checksum toe aan elk frame
                    (de checksum is goed berekend)
    -c              markeer als copyright
    -o              markeer als niet-origineel
    -S              print geen vooruitgangs rapport, VBR histogrammen 

  Een van deze opties meegeven zal een ID3 tag toevoegen
     --tt <titel>     titel van het liedje (max 30 karakters)
     --ta <artiest>   artiest die het liedje zingt (max 30 karakters)
     --tl <album>     album waar het van komt (max 30 karakters)
     --ty <jaar>      jaar waarin het liedje/album is gemaakt (max 4 karakters)
     --tc <commentaar>toegevoegde informatie (max 30 karakters)


MPEG1 samplerates(kHz): 32 44.1 48 
bitrates(kbs): 32 48 56 64 80 96 112 128 160 192 224 256 320 

MPEG2 samplerates(kHz): 16 22.05 24 
bitrates(kbs): 8 16 24 32 40 48 56 64 80 96 112 128 144 160

Gogo


GOGO-no-coda ver. 2.24 (Feb 12 2000)
Copyright (C) 1999 PEN@MarineCat and shigeo
          Special thanks to Keiichi SAKAI, URURI, Noisyu and Kei
This is based on LAME3.29beta and distributed under the LGPL
usage
gogo inputPCM [outputPCM] [options]

 inputPCM is input  wav file
if input.wav is `stdin' then stdin-mode
outputPCM is output mp3 file (omissible)

options
-b  kbps     bitrate [kpbs]
-br bps      bitrate [ bps]
-silent      geef geen vooruitgangs rapport weer 
-off         {3dn,mmx,kni(sse),e3dn}
-v {0,..,9}  VBR [0:hoge kwaliteit 9:hoge compresie]
             Je moet dit combineren met de -b optie
alleen voor RAW-PCM input
-offset       bytes overslaan header grootte
  -8bit       8bit-PCM [dflt 16bit-PCM]
  -mono       mono-PCM [dflt stereo-PCM]
  -bswap      hoge, lage byte swapping voor 16bitPCM
  -s kHz      freq van PCM [dflt 44.1kHz]
-nopsy        schakel psycho-acoustics uit
-m  {s,m,j}  output formaat s:stereo, m:mono, j:j-stereo
-d  kHz      verander sampling-rate van output MP3
-emh {n,c,5} de-emphasis
-lpf {on,off} 16kHz filter [dflt use als <= 128kbps; niet gebruiken als >= 160kbps]
-test        benchmark mode
-delete      verwijder input file, na encoden

RipEnc

RipEnc doet de zelfde taak als de code bovenaan, maar het is geschreven in shell en is makkelijker te gebruiken :)

Hier is hoe het eruit ziet.


RipEnc version 0.7, Copyright (C) 1999  Michael J. Parmeley
<mjparme@asde.com>, RipEnc comes with ABSOLUTELY NO WARRANTY

There is currently NO encoding process running in the background
Your encode.log file is 982607 bytes long.

<Enter 'd' for details, 'v' to view the encode log, or 'del' to delete the encode log>


1) Verander de werk directory..................[/megajukebox/tmp]
2) kies encoder................................[lame]
3) Kies ripper.................................[cdparanoia]
4) Kies id3 tool...............................[none]
5) Zet CDDB benaming aan of handmatig..........[handmatig]
6) Setup XMCD_LIBDIR variabel voor CDA.........[/var/X11R6/lib/xmcd]
7) Hoe de naam van een liedje eruitziet........[artist-name_of_song.mp3]
8) Rip de hele CD?.............................[no]
9) Zet de kleine schijf optie aan..............[no]
10) Kies je Cd-Rom device......................[/dev/cdrom]
11) Stel de Bitrate in voor de encoded MP3's...[256]
12) Laat de file's zien in je werk directory
13) Start
14) About
?

10.2 GUI gebaseerde encoders

GUI gebaseerde encoders hebben dezelfde functionaliteiten als console gebaseerde encoders, maar het is allemaal in een mooi en makkelijk te gebruiken interface gestopt. Grip en RipperX zijn hetzelfde in werking, ze bieden je beiden aan om enkele of alle tracks van een Cd te rippen en converteren. Ze hebben ook CDDB support wat je in staat stelt om de informatie van een album en zijn nummers te ontvangen van een server en bespaart je dat je informatie met de hand moet invoeren.

10.3 Encoder snelheid

In de encodeer secties heb ik 3 verschillende encoders vermeld: bladeenc, lame en gogo. Het grote verschil zit in hun snelheid van encoderen (hoewel ze verschillende opties hebben die we eerder hebben laten zien).

Een klein voorbeeld. Ik heb een track van een Cd geript en deze geencodeerd met verschillende encoders. Alle encoders draaiden op hetzelfde systeem en produceerden allemaal stereo mp3's.


[dj@megajukebox]$ ls -l cdda.wav 
-rw-rw-r--   1 dj       dj       59823164 Feb 10 00:56 cdda.wav

[dj@megajukebox]$ bladeenc cdda.wav -br 256

BladeEnc 0.91    (c) Tord Jansson          Homepage: http://bladeenc.mp3.no
===============================================================================
BladeEnc is free software, distributed under the Lesser General Public
License. See the file COPYING, BladeEnc's homepage or www.fsf.org for more
details.

Files to encode: 1

Encoding:  ../test.wav
Input:     44.1 kHz, 16 bit, stereo.
Output:    128 kBit, stereo.

Completed. Encoding time: 00:05:58 (0.78X)                                   

All operations completed. Total encoding time: 00:05:58

--------------------------------------------------------------------------------

[dj@megajukebox]$ lame cdda.wav -b 256
LAME version 3.50 (www.sulaco.org/mp3) 
GPSYCHO: GPL psycho-acoustic model version 0.74. 
Encoding ../test.wav to ../test.wav.mp3
Encoding as 44.1 kHz 128 kbps j-stereo MPEG1 LayerIII file
    Frame          |  CPU/estimated  |  time/estimated | play/CPU |   ETA
 10756/ 10756(100%)| 0:02:28/ 0:02:28| 0:02:29/ 0:02:29|    1.9074| 0:00:00 

--------------------------------------------------------------------------------

[dj@megajukebox]$ gogo cdda.wav -m s -b 256
GOGO-no-coda ver. 2.24 (Feb 12 2000)
Copyright (C) 1999 PEN@MarineCat and shigeo
          Special thanks to Keiichi SAKAI, URURI, Noisyu and Kei
MPEG 1, layer 3 stereo
inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=256kbps
inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=128kbps
input  file `../test.wav'
output file `../test.mp3'
{  10751/  10755} 100.0% (  2.94x)  re:[00:00:00.03] to:[00:01:35.42]
End of encoding
time=  95.430sec

Het ziet ernaar uit dat Gogo een meer geoptimaliseerd algoritme voor encoderen heeft dan Lame.

11. MP3's streamen.

Een streaming server stelt je in staat om MP3 files over een Tcp gebaseerd netwerk te transporteren. dit kan het internet zijn of je lokale netwerk / intranet.

De connectie principes zijn bijna gelijk aan die van een web server, files worden gestreamd als een client (de MP3 speler) verbinding maakt met de server.

Een streaming server instellen is erg simpel. Ik fokus eerst op Icecast en dan Fluid.

11.1 Icecast

Na het downloaden en untarren, zou een goede kijk in de doc/ directorie geen kwaad kunnen, de HTML handleiding is erg handig en omvattend.

Als je de bron code hebt gedownload, volg dan de instructies voor het compileren die relevant zijn voor je systeem.

Icecast zal niet goed werken als je de servernaam in de configuratie file, icecast.conf, welke in de etc directory staat niet goed instelt. Het moet de naam zijn die je IP adres kan ophelderen. Als je het volgende zie als Icecast opstart heb je problemen:


-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!

Edit de icecast.conf welke zich bevindt in de etc directory en zoek de regel die het woord "server_name" bevat en voer je server naam in. Als je onzeker bent kun je je hostname uitvissen met het hostname commando, of door een kijkje in /etc/hosts.

Als je de nodige veranderingen hebt gemaakt moet je of de conf file naar de bin directory kopieëren of icecast starten met de -c optie en de locatie aangeven, zoals dit:


./icecast -c ../etc/icecast.conf

Als alles goed is geconfigureerd, zie je iets wat lijkt op:


[dj@megajukebox bin]$ ./icecast -c ../etc/icecast.conf -d /home/dj/mp3/icecast/  
Icecast Version 1.3.0 Starting...
Icecast comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of Icecast under the terms of the
GNU General Public License.
For more information about these matters, see the file named COPYING.

[05/Jan/2000:18:36:30] Icecast Version 1.3.0 Starting..
[05/Jan/2000:18:36:30] Using stdin as icecast operator console
[05/Jan/2000:18:36:30] Tailing file to icecast operator console
[05/Jan/2000:18:36:30] Server started...
[05/Jan/2000:18:36:30] Listening on port 8000...
[05/Jan/2000:18:36:30] Using [megajukebox] as servername...
[05/Jan/2000:18:36:30] Max values: 1000 clients, 1000 clients per source, 10 sources, 5 admins
-> [05/Jan/2000:18:36:30] [Bandwidth: 0.000000MB/s] [Sources: 0] [Clients: 0] [Admins: 1] [Uptime: 0 seconds]

De -d optie zet de directory voor log files en templates.

Hieronder is de lijst van command-line opties:


        -c [filename] 

Geef een configuratie file door. Onthoud, dat elk command-line
optie die je meegeeft de waarden in de configuratie file 'vervangt',
dus alles in de icecast.conf wat niet is overschreven door de nieuwe
file wordt gebruikt voor de server.

        -P [port] 

Dit is de poort gebruikt voor alle client, source en admin connecties. Standaard
staat het op 8000.

        -m [max clients] 

Staat dit aantal client connecties toe. Als dit is berijk worden alle client
connecties geweigerd met 'HTTP/1.0 504 Server Full'.

        -p [encoder password] 

Dit stelt het paswoord dat de encoder moet gebruiken om naar de server
te streamen. Onthoud dat als je de server met crypt() hebt gecompileerd
dat hier ook een versleutelde string moet staan.

        -b 

Dit zend de icecast server in de achtergrond (een deamon process).
Om de admin commando's nu te gebruiken moet je connectie maken met de server
als een admin, met een soort van telnet client.

        -d [directory] 

Zorg dat icecast alle logfiles die hij maakt en alle templates waar hij naar
zoek in deze directorie.

Zo, de server is gestart, maar nu moeten we een MP3 bron er aan verbinden.

Shout

Shout voorziet Icecast van een statische playlist van MP3's om te streamen.

Je maakt een playlist van de MP3 files die je wilt streamen met het volgende commando:


find [MP3 directory] -name *.mp3 -print > playlist

Het is heel makkelijk om het shout service te starten, geef het volgende commando:


[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist

De -P optie is het paswoord dat nodig is om een mount-punt toe tevoegen aan Icecast, dit is normaal ingestelt als hackme..... Ik raad je sterk aan dit te veranderen voordat een ander het doet :) De -p optie specificeert de lokatie van de playlist file.

Hieronder is een lijst van alle command line opties:


[dj@megajukebox bin]# ./shout
Usage: shout <host> [options] [[-b <bitrate] file.mp3]...
Options:
        -B <directory>       - Gebruik deze directory voor alle shout files
        -C <file>    - Gebruik file als configuratie file
        -D <dj_file> - Draai dit voor elk liedje (system())
        -P <password>        - Gebruik als paswoord password
        -S              - Geef alle instellingen weer en exit
        -V              - Gebruik verbose uitvoer
        -X <desc>    - Gebruik gespecificeerde beschrijving
        -a              - schakel automatisch bitrate (transfer) correctie 
        -b <bitrate> - Start met het gespicifeerde bitrate
        -d              - Schakel de dj in.
        -e <port>    - Verbind op poort met server.
        -f              - Sla files over die niet de goed bitrate hebben
        -g <genre>   - Gebruik een specifiek genre
        -h              - Laat deze tekst zien
        -i              - Gebruik oude icy headers
        -k              - Vermink de interne playlist niet
        -l              - Ga voor altijd door (loop)
        -m <mount>   - Gebruik het gespecificeerde mount punt
        -n <name>    - Gebruik de gespecificeerde naam
        -o              - Schakel bitrate autodetectie uit
        -p <playlist>        - Gebruik deze file als een playlist
        -r              - Shuffle playlist (random play)
        -s              - (Geheim) Zend geen meta data naar directory server
        -u <url>     - Gebruik de gespecificeerde url
        -v              - Laat versie zien
        -x              - Update de cue file niet (spaart cpu)
        -z              - Ga in de achtergrond (Daemon mode)
        -t              - Schakel titel streaming in

LiveIce

LiveIce kan in 2 modes werken, het kan een playlist doorgeven aan Icecast of kan live audio van de geluidskaart doorgeven.

Na het untarren en lezen van de README betreffende het compileren van het pakket, zorg dan dat mpg123 is geinstalleerd en dat LiveIce het kan gebruiken als LiveIce het nodig heeft.

Er zijn twee manieren om LiveIce te configureren. De config file editten met vi/emacs/of wat dan ook of doormiddel van een TK gebaseerde configuratie tool, wat een mooie manier van editten is :)

De best plaats voor beschrijvingen over de internals van liveice.conf kan worden gevonden op de LiveIce homepage waar Scott alle opties beschrijft.

Dit is een kopie van mijn config file met LiveIce ingesteld in de mixer mode (streamen van een lijst MP3's)

NOTITIE: Ik heb commentaar toegevoegd aan de file, dus als je kopie en paste doet zorg dan dat er geen tekst op de volgende regel verschijnt anders werkt LiveIce niet :)


# liveice configuratie file
# Automatisch gegenereerd

SERVER megajukebox              # Je server naam * MOET DE NAAM ZIJN HOE DE SERVER IS GENOEMD *

PORT 8000                       # De poort waar Icecast op draait.

NAME Megajukebox                # Informatie met betrekking to de server naam die wordt gezonden
                                # naar de MP3 spelers en de directory servers.
                                # Voorbeelden 'Sarah FM' of 'ThisTown: Loud and Heavy Jazz -Internet Radio 24/7' 

GENRE Live                      # Informatie over het genre. Bijvoorbeeld 'Talk' of 'Dance'

DESCRIPTION                     # Informatie over het station. Voorbeeld 'The best for reggae in the North'

URL http://megajukebox:8000     # De URL en poort van de serverThe URL and port of the server.

PUBLIC 0                        # Zet hier 1 als wilt dat Icecast je station lijst en details moet doorgeven.
                                # laat het anders op 0 staan

XAUDIOCAST_LOGIN                # Kan ICY_LOGIN zijn of X_AUDIOCAST_LOGIN. X_AUDIOCAST is beter. 

MOUNTPOINT /techno              # Stelt de naam van het mountpunt van de stream in voor Icecast.
                                # Wordt alleen gebruikt als X_AUDIOCAST is gebruikt. De default is icy_0

PASSWORD hackme                 # Het admin paswoord van Icecast.

SAMPLE_RATE 44100               # De sample rate van de stream
STEREO                          # kan MONO of STEREO zijn

NO_SOUNDCARD                    # Zie hieronder

HALF_DUPLEX                     # Stelt de soundkaar duplex mode in. Kan HALF_DUPLEX of FULL_DUPLEX zijn

USE_GOGO                        # Stelt de encoder in die moet worden gebruik. Kijk in de README voor een lijst

BITRATE 128000                  # Stelt de bit rate van de stream in (zie hieronder)

VBR_QUALITY 1                   # Stelt de variabele bit rate kwaliteit in.

MIXER                           # Zie hieronder

PLAYLIST /megajukebox/playlist  # Lokatie van de playlist (zie details op het find commando later
                                # in dit hoofdstuk)

TRACK_LOGFILE track.log         # Filenaam en lokatie om de lijst van MP3's te dumpen die gestreamt worden

Als je de config file hebt start je LiveIce op deze manier:
<code>
[dj@megajukebox liveice]$ ./liveice
/megajukebox/playlist
1
opening connection to megajukebox 8000
Attempting to Contact Server
connection successful: forking process
opening pipe!...
writing password
Setting up Interface
Soundcard Reopened For Encoding
Input Format: 16Bit 44100Hz Stereo
Output Format: 256000 Bps Mpeg Audio
IceCast Server: megajukebox:8000
Mountpoint: /techno
Name: megajukebox - this and that radio - broadcasting 24/7
Genre: Techno
Url: http://megajukebox
Description: a load of digital noise -> but i know you like it :)

 Press '+' to Finish
adding /megajukebox/demotunes/track_1.mp3
adding /megajukebox/demotunes/track_2.mp3
adding /megajukebox/demotunes/track_3.mp3
adding /megajukebox/demotunes/track_4.mp3
/megajukebox/demotunes/track_4.mp3
Adding New Channel 1
Adding New Channel 2
Channel 1 selecting 
 /megajukebox/demotunes/track_1.mp3
Channel 2 selecting 
 /megajukebox/demotunes/track_1.mp3
Playing track_1.mp3
searching for Id3v2
searching for Id3v1
copying the data
fixing the nulls
adding the url
closing input file
Using log track.log

The last line is a peak meter.

Dit zijn de toetsenbord controls voor de mixer mode:


Actie                                   Kanaal 1 toets  Kanaal 2 toets
~~~~~~                                  ~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~
Selecteer volgende track op kanaal      1                a
Selecteer vorige track op kanaal        q                z
Start/Stop kanaal                       2                s
Reset kanaal                            w                x
Verhoog volume op kanaal                3                d
Verlaag volume op kanaal                e                c
Verhoog snelheid op kanaal              4                f
Verlaag snelheid op kanaal              r                v
Sticky mode Aan/Random/Uit              5                g
Preview kanaal                          t                b
Random Track                            u                m

De bovenstaande liveice.cfg is voor mixermode. Om LiveIce in audio mode te gebruiken verander dan de regel met MIXER naar NOMIXER en maak NO_SOUNDCARD, SOUNDCARD en herstart LiveIce.

De correctie opties vergeten instellen kan lijden to enkele interesante waarschuwingen ;)


   946:Error: Line In mode *en* geen soundkaart??????? Eeejit!

Als je alles goed hebt ingesteld en een externe bron hebt ingeplugd, moet je kunnen streame =:)



[dj@megajukebox liveice]$ ./liveice
/megajukebox/playlist
0
Initialising Soundcard
16Bit 22050Hz Stereo Full Duplex 
opening connection to megajukebox 8000
Attempting to Contact Server
connection successful: forking process
opening pipe!...
writing password
Setting up Interface
Soundcard Reopened For Encoding
Input Format: 16Bit 22050Hz Stereo
Output Format: 32000 Bps Mpeg Audio
IceCast Server: megajukebox:8000
Mountpoint: /daves_band_live_at_the_club
Name: megajukebox - Dave and the Dynamite - Live at the Roxy  
Genre: Live/Rock
Url: http://megajukebox
Description: megajukebox::Louder than a frog in a trashcan..... and 
sical
 Press '+' to Finish
Lvl: L:   8704 R:  11776 

De laatste regel is een signaal meter, als het input signaal te hoog is krijg je een *clip* waarschuwing. Als je de gain van de input source zachter zet.

De slim goed geoogedenn onder jullie heeft misschien gezien dat in liveice.cfg de eerste regel commentaar laten zien dat de file automatisch is gegenereerd. Als je de TK gebaseerde GUI liveiceconfigure.tk gebruikt en je hebt handmatige veranderingen gemaakt ben je die kwijt. Gebruik de GUI of leer vi/emacs :)

11.2 Fluid

Na het untarren van de bundel cd naar de directory, lees dan de README :)

Fluid heeft drie basis modes van operatie, verzenden, ontvangen en doorsturen. Ik focus alleen op verzenden.

De configuratie files die te maken hebben met transmit staan in config/MP3TX.cfg. Om de server met het volgende te testen zouden de standaard settings ok moet zijn:

java Fluid TX

Natuurlijk moet je een vorm Java eerst geinstalleerd hebben. Je kan de Blackdown port van JDK gebruiken verkrijgbaar op http://www.blackdown.org of als je Redhat gebruikt, Kaffe.

Fluid komt met een paar voorbeeld MP3 files, Dus als er iets werkt zou je iets als dit moeten zien (Ik heb de server in dit voorbeeld met Kaffe gestart, je kan het ook starten met java):


[dj@megajukebox Fluid-Beta2J]$ kaffe Fluid tx
------- Fluid Streaming Server Beta 2 ------- 
This program is ShareWare(tm) and it will not 
be crippled in any way because of it. However 
if you do like the program and will use it    
commercial purposes, we ask of you to contact 
us at the address below for pricing info:     
                                              
 Eldean AB                  E-mail:           
 Sjoangsvagen 7             fluid@subside.com 
 S-192 72 Sollentuna                          
 SWEDEN                                       
                                              
   Fluid is Copyright Subside (C) 1998        
       written by Lars Samuelsson             
         http://www.subside.com               
--------------------------------------------- 

* Transmission mode *
Reading config from: config/MP3TX.cfg
Reading playlist: playlist.m3u
Server started on port: 2711
Accepting administrator login on port: 2710
P| Dr. Nick - Hello Everybody

Als je zo ver komt, ziet het er naar uit dat het werkt, maar ik weet zeker dat je meer wilt streamen dan alleen de demo files!

Je moet een playlist van MP3's die je wilt streamen compileren. Dit is een statische lijst, gebruikers kunnen geen aanvragen maken. Deze playlist is playlist.m3u en staat standaard in de root directory.

Om een playlist van alle MP3's in een bepaalde directory (of disk) te compileren gebruik dan dit commando:


find [MP3 directory] -name *.mp3 -print > playlist.m3u

Standaard gebruikt de server poort 2711, dit is waar je luisteraars verbinding mee maken, als je dit wilt veranderen kan dat in de configuratie file.

De server kan op afstand worden beheerd door te telnetten naar de admin poort, standaard poort 2710:


[dj@megajukebox Fluid-Beta2J]$ telnet localhost 2710
Trying 127.0.0.1..megajukebox
Connected to localhost.localdomain.
Escape character is '^]'.
jaguar
You are connected to the -Fluid- Streaming Server
Type "help" for a command reference
help
The following commands are available:
 help conn curr exit
curr
Information about the currently broadcasted song:
Title:   Beer Talk
Artist:  Homer Simpson
Album:   The Simpsons
Year:    1996
Comment: Borrowed this as an example
Genre:   Comedy

Het woord "jaguar" is het admin password, dit is standaard. Er is geen prompt voor het password dus wacht er niet op! Ik raad je aan dit te veranderen of je nodigt een hacker uit! Het kan veranderd worden in de configuratie file, welke er zo uitziet:


[dj@megajukebox config]$ cat MP3TX.cfg 
2711
2710
5
4096
32
1000
jaguar
playlist.m3u
current.txt

# --- De regels zijn ---
# 1. POORT nummer (welke de server gaat gebruiken)
# 2. POORT nummer (voor het onderhouden van de server)
# 3. Maximaal aantal connecties (voor de server)
# 4  Packetgrootte bij het lezen/zenden (in bytes)
# 5. Bitrate van de mp3s in kbit/s (alle mp3s moeten dezelfde bitrate hebben)
# 6. Tijd tussen liedjes (in milliseconden)
# 7. Paswoord voor op afstand beheren
# 8. Playlist naam (lijst in .m3u formaat)
# 9. Naam van de file om de song info naar toe te schrijven (van ID3-tag)

De opmerking op de playlist is dat deze in m3u formaat is wat betekent dat het in het zelfde formaat is als het find commando eerder.

11.3 Bandbreedte afwegingen

Audio streamen kan ontzettend veel bandbreedte innemen als de bit-rate van de MP3 server te hoog staat.

Overweeg dit scenario. Een T1 link heeft een capaciteit van ongeveer 1.55 Mb/Sec. Als je je MP3' streamt op 128K/Bps stereo, zal elke speler 256K/Bps gebruiken, dus er kunnen maar 6 gebruikers verbinding maken met je MP3 server op elk tijdstip zonder problemen. En 256K/Bps, kunnen veel gebruikers niet door hun modem krijgen!

Dus je moet een beslising maken niet alleen in te stellen op wat de server kan, maar op wat een client kan. 24K/Bps geeft een redelijke kwaliteits signaal waar 56K modem gebruikers naar kunnen connecten, en dezelfde T1 line kan nu 32 connecties aan.

Als je server op een Intranet draait, telt bandbreedte nog steeds mee vooral als je een 10M/Sec netwerk hebt.

Maar laat a.u.b je ISP of sys admin weten dat je gaat streamen anders zorg je voor opschudding. Sommige ISP's laten je betalen voor bandbreedte als je een limiet overschreidt en sys admins willen weten waarom hun netwerk zo traag is :)

11.4 Copyright onderwerpen

Ik denk dat het logisch is dat platenmaatschappijen het niet leuk vinden als je hun materiaal zonder hun toestemming of betaling gaat streamen! Dus wat kun je streamen?

Dit is een gebied waar je je bewust moet zijn van legaliteit, omdat jij degene bent die schuldig is.

Hieronder staan twee links, een van de Electronic Frontier Foundation, welke advocaten zijn welke de beperkingen van de omliggende technologie vrijer willen maken. De andere link is naar de Recording Industry Association of America, welke artiesten beschermt tegen piraterij.

Ik raad je sterk aan beide sites te bezoeken en andere waar je fysiek op gebaseerd bent.

http://www.eff.org/cafe/

http://www.riaa.com/weblic/weblic.htm

12. MP3's luisteren

Hopelijk heb je nu enkele MP3 files om te beluisteren, en je hebt de keuze om van stream of file te spelen.

12.1 Spelen van een File

Spelen van een file is bij alle spelers erg simpel. Het enige verschil is dat sommige command-line gebaseerd zijn en ander X gebaseerd.

Om een MP3 te spelen van een file moet je de mp3 file doorgeven als een parameter, zoals dit:


[dj@megajukebox]$ mpg123 /mp3_files/SampleFile.mp3

of

[dj@megajukebox]$ xaudio /mp3_files/SampleFile.mp3

Als je een serie files wilt spelen, geef ze dan een lijst:


[dj@megajukebox]$ alsaplayer /mp3_files/SampleFile1.mp3 /mp3_files/SampleFile2.mp3

Om tracks in een directory te spelen, gebruik dan een wildcard om alle files te selecteren:


[dj@megajukebox]$ xmms /mp3_files/*.mp3

12.2 MP3 spelen van streams

Mp3's spelen van een MP3 stream is ook best simpel, gewoon de file met de streams url en poort nummer:


mpg123 http://localhost:8000

of

freeamp http://megajukebox:2711

12.3 Mixen

eMixer

eMixer geeft je de mogelijkheid MP3's te mixen net als bij een menpaneel van een DJ.

Niewere versies ondersteunen 2 geluids kaarten zodat je je mix uit kan voeren op de ene kaar en de volgende track beluisteren op de andere geluids kaart.

Als normaal als je hebt geuntart, kijk je in de readme file hoe je het pakketje moet compileren.

Je moet een playlist met MP3 files maken, doe dit met het find commando dat in de Streaming sectie staat.

Je moet zorgen de mpg123 is geinstalleerd voordat je eMixer kunt gebruiken.

Hier zijn de controle toetsen (uit de readme file)


KEYBOARD CONTROLS

"up, down"              door de playlist scrollen
"page up, page down"    door de playlist scrollen met bladzijden per keer
"enter"                 start/stop track
"tab"                   verander kanaal
"}","]"                 Volume en snelheid controle/scherm
"space"                 herstart de actieve track
"left, right"           fader controls
"insert"                verhoog  volume/snelheid in kanaal een  
"home"                  verlaag  volume/snelheid in kanaal een  
"delete"                verlaat  volume/snelheid in kanaal twee  
"end"                   increase volume/snelheid in kanaal twee  
"< , / , >"             links, center & rechts posities van fader
" + , = "       (NEW)   wissel tussen faders 
" q "                   start/stop kanaal een
" w "                   start/stop kanaal twee
" p "                   Verwissel de playmodes - single, loop, continous, random
" a "                   stop alle kanalen
" f "                   file menu
" u "                   util menu
" h "                   help menu
" ~, ` "                annuleer menu
" s "                   zet sim play aan
                        (SIM Play start de zelfde track in beide kanalen
                        tegelijk ) 

13. Feedback.

Nieuwe hardware en software wordt altijd gereleased. Als je nieuwe versie van hardware en / of software in deze gebruikt, of als je iets kan toevoegen, zend dan je informatie voor toevoeging naar phil@plus24.com en ik zet het in de volgende release.

Omdat ik alle vragen beantwoord, onthoud dan dat ik niet altijd kan terug mailen omdat ik ook moet werken.

Happy MP3'ing!!