Weekend Prosjekt: Batch konvertere musikksamlingen på Linux

Diskplass er billig, men det er fortsatt ikke gratis. Så hvis din indre audiofile overtaler deg til å rippe musikksamlingen til et lossless format som FLAC, kan du nyte en perfekt lyd hjemme, men det er rett og slett for mye informasjon for flash-basert lagring – du må komme opp med en annen løsning for å ta musikken din på veien. Heldigvis er dette en helg prosjekt hvor du kan tilbringe noen minutter å sette opp, og resten av helgen la maskinen gjøre jobben mens du slapper av.

I utgangspunktet, hvis du ønsker et lossless og lossy kopi av hver sporet, vil du trenger å kode hvert spor to ganger. Ingen av Linux CD rip-og-koding programmer som støtter samtidig koder to versjoner av hvert spor, men det er et par andre strategier som vil komme til samme sted – og potensielt raskere, siden de ikke kan kreve din tilstedeværelse på tastaturet.

hver bit du tar

En tilnærming er å bruke en auto-transkoding filsystem plugin for FUSE, for eksempel MP3FS eller Fuse -musikk. Disse systemene skape en virtuell katalog som ser ut til å bli fylt med lossy versjoner av lossless originalene, men som i virkeligheten bare genereres når den åpnes av et program – inkludert en musikkspiller eller filbehandleren du bruker til å kopiere dem til en bærbar enhet. De har den fordelen at de ikke krever noe ekstra diskplass: Sikringen modulen omkoder de FLAC-filer til lossy format i løpet av fil-tilgang drift

En stor ulempe er at de er relativt umodne kode;. med mange filer, kan de skape feil-ridd filer, eller i verste fall bare henge. En annen ulempe er at transcoding skjer som
filene blir kopiert, som bremser ned kopieringsprosessen. Synkronisering av en stor samling kan ta en stund, med mindre du har en veldig rask prosessor og /eller mange kjerner

Det er, uten tvil, noe ". L33t " om å bruke FUSE å omkode filene dine på fly, så for de av oss som i hemmelighet tror Linux har fått for
brukervennlig de siste dagene, er det en attraktiv tilnærming. Men den skjulte kostnadene ved denne tilnærmingen er at du re-transkode hver fil hver gang det åpnes – inkludert hvis du fjerne det og senere erstatte det, og med en full komplett transkode for hver enkelt enhet du synkroniserer.

Det er egentlig en CPU-versus-disk trade-off. Så lenge du er expending prosessoren sykluser å utføre arbeidet, ville du kanskje også lagre resultatene lokalt. Den eneste kunsten er den første tidkrevende trinn av masse omkoding den store audio-katalogen. Det finnes flere verktøy for å automatisere prosessen for deg, hver med sine egne styrker og svakheter.

Batch Skole

Hvis du er ute etter et GUI app, er SoundConverter en generell batch konvertering verktøy som kan få jobben gjort i en hast. Den bruker GStreamer, og det kan brukes til å konvertere alle GStreamer-støttet format til et annet format – dermed FLAC til Ogg Vorbis eller FLAC til MP3 er ingen spesiell oppgave. Preferansene la deg lagre dine konverterte filene i de samme katalogene som originalene, eller i et eget hierarki, og lar deg spesifisere fil-døpe regler.

Det er også svært enkelt å definere utgangsformatet du foretrekker i SoundConverter, inkludert bitrate og modus (dvs. konstant bitrate eller variabel bitrate), og til og med resampling. Men det er også SoundConverter svake punkt: det bare bryr seg om output format. Du kan ikke fortelle det å ignorere (eller direkte kopier-over) eksisterende lossy filer. Hvis du har en 100% lossless samling, kan SoundConverter gjøre kort prosess med å duplisere et lossy versjon av den, komplett med alle metadata tags bevart, men det blindt doble konvertitter streif lossy filer i en blandet samling. Grensesnittet er også så enkelt (en stor, rullende liste over kø filer) at det er svært vanskelig å søke gjennom det og plukke ut enkeltfiler for å fjerne fra køen.

En bedre løsning ville tillate deg å omkode de lossless-filer, men la allerede lossy filer urørt. Slike fleksible strategier er tilgjengelig gjennom noen kommandolinjeverktøy, for det meste Bash skript som utnytter eksisterende CLI multimedia verktøy som den LAME encoder eller FFmpeg. Det er mange av disse skriptene, og de fleste av dem bruker en variant av " klassisk Unix " navnekonvensjon flac2mp3
.

En god flac2mp3 skriptet ligger på Arch Linux wiki, for eksempel. Det er faktisk fire varianter på wiki-side, hver med en litt annerledes sett med funksjoner. Den første er en grei LAME konvertering av alle * .flac filer i katalogen du leverer som et argument, kopiering artist, sjanger, dato, spornummer, og album- og sangtittel metadatakoder med id3-verktøyet.

Den andre strekker den første til å gjøre bedre bruk av LAME forbedrede VBR encoding oppførsel, men for noen grunn det legger også en " Nei Replaygain " bytte (som du trygt kan fjerne på kopien av skriptet du bruker). Den bruker også LAME seg til å skrive MP3-filenes metadata tags i stedet for id3 verktøyet, så den har en mindre avhengighet. Den tredje versjonen gir muligheten til å rekursivt trappe ned gjennom underkataloger finne alle FLAC-filer, og den fjerde gir muligheten til å spesifisere en egen utgang katalog.

I min vurdering, den fjerde versjonen av manuset er en du virkelig vil, selv om det skader ikke å redigere noen av skript for å justere noen av innstillingene til dine personlige preferanser (f.eks Replaygain støtte). Bare sørg for at du har installert de nyeste LAME og ID3 pakker før du starter, og kjøre tweaking eksperimenter på en relativt liten del av hele musikkbiblioteket.

Music By Numbers

I tillegg til flac2mp3 fungerer, er det fortsatt på " dum script " enden av transkoding spekteret: hovedsak gi én forhåndsbestemt output format og plassering. Vi kan gjøre det bedre. Hvis du er ivrig på Ogg Vorbis-utgang, for eksempel, er acxi script fleksibel nok til å transkode til både Vorbis og MP3, avhengig av hvilket flagg du levere på kommandolinjen, og har justerbar kontroll for Vorbis og MP3-koding kvalitet, og fornuftige defaults

Enda viktigere, støtter acxi en -. kopiere
argument, etter som du kan levere en kommaseparert liste over filtyper for skriptet å kopiere as-er til din destinasjon katalog . Dermed kan du kjøre acxi -q 9 --destination /home /yername /musikk /ogg --copy mp3, ogg, jpg og scriptet vil rekursivt gå kilden katalogen, konvertere FLACS men kopiering over MP3-filer, OGGs, og JPEG filer. Hvorfor ville du trenger å kopiere over JPEG-filer, spør du? Enkelt.: Album coverene

Dette er nesten
akkurat den atferden som du ønsker for vårt eksempel scenario: du får et speilbilde av din nesten-all-lossless musikksamling, men i lossy format som du selv velger, og det er ingen dobbel-koder. Den eneste grunnen til at jeg ikke direkte anbefale acxi som den perfekte løsningen er at den ikke håndterer ID3 tag konvertering når du viser MP3. Hvis du er ute etter Vorbis utgang, selvfølgelig, det fungerer fint. Acxi er også skrevet i Perl, som jeg ikke finner spesielt vennlig mot endring (selv om det er bare meg), men hvis du ønsker å hacke skript for å legge til MP3 tag støtte, bør det være mulig med LAME.

I praksis finner jeg Python-baserte musikksamlingen synkronisering script for å være det enkleste alternativet for alle. Som acxi, den kopierer lossy filer over til destinasjonen fold hierarki, men det bevarer metadatakoder, og støtter selv WAV fil innspill i tillegg til FLAC. Versjonen vert på nettstedet eksemplarer i løpet av .m3u spillelistefiler (som er fin), men ikke JPEG-bilder, men koden er enkel nok til at du legger .jpg til " convert_map " Strukturen er trivielt. Dette skriptet er også langt mindre ordrike enn acxi, både i sin kode og i sin kommandolinje utgang. Jeg stoler LAME nok at hvis en test katalogen viser seg fint, jeg trenger ikke en konstant strøm av " oppdatering " linjer skrevet til stdout når jeg trykker på avtrekkeren for hovedbiblioteket.

Den store trade-off er at musikk-samlingen-sync er designet for MP3 bare utgang. Hvorvidt dette er en deal-breaker for deg er strengt tatt et spørsmål om personlig preferanse. Mange open source talsmenn protest til MP3 i lang tid på grunn av patent-eiernes trakassering og offentlig nedsettende av Vorbis, og insisterer på at Vorbis produserer fortsatt bedre lydkvalitet for en fast filstørrelse. Jeg tror de er nok rett, men bit-perfekt FLAC kopier av musikken min hjemme holde meg fra omsorg for mye om den informasjonen tapt i de siste par enere og nuller i lossy kopi på min telefon – og på mer enn én anledning har jeg funnet ut at utlån noen en Ogg kopi av en sang bare fører til forvirring.

Din kjørelengde kan variere, selvfølgelig. I tillegg er musikk-samling-sync fint fordi det skiller transcodign funksjonalitet ( wav_to_mp3 Hotell og flac_to_mp3
) i separate funksjoner. Noen få minutter av studien med oggenc, og du kan lett bytte i en flac_to_ogg funksjon av din egen.

Bombs Away

Hvis du gjør det, sender en lapp tilbake til musikk-samling-sync er åpenbart den beste bruken av tiden du sparer ikke prøver alle disse transcodes hånd. Noe som fører til et siste punkt i diskusjonen: Jeg har faktisk ikke lagt ut hvordan du kan bruke noen av CLI verktøy for å generere lossy kopi av musikksamling i trinn-for-trinn-mote. Det er fordi hvordan man best kan angripe en stor jobb som dette er svært kontekstavhengig. Hvis dette er første gang du har satt ut for å lage en bulk-transkode, kan du ikke vet hvordan å anslå hvor lang tid det vil ta å kjerne gjennom hele jobben. Hvis du fyre den opp søndag kveld ventet å være ferdig før du står opp mandag morgen, kan du være i for en ubehagelig overraskelse hvis tallene er off – samt dilemma om ikke å drepe prosessen mid-batch og prøv igjen senere.

Et enkelt råd til å hjelpe med å gjøre anslaget ville være å velge en mellomstor mappen og kjør omkode jobb på det alene, klokkes hele jobben med tid
program. For eksempel, tid music-collection-sync.py musikk /flac /The_Police musikk /mp3 /The_Police. Du kan trekke opp Sting & selskapet i din favorittmusikkspilleren for å få en rask opptelling av den totale tiden tatt opp av sine samlede verker (en statistikk de fleste musikkspillere gir automatisk når du velger en artist), og bygge din estimat derfra.

Hvis estimatet viser seg å være lenger enn du kan legge igjen en prosess som kjører på maskinen din uten å forstyrre andre oppgaver, jeg vil råde trekke opp en grafisk disk bruk monitor som Filelight å få en rask visuell perspektiv på hvordan ulike underkataloger bidra til Total. På den måten kan grovt dele oppgaven i to, tre eller fire biter, avhengig av tidsestimat, og takle én natt. Men du dele opp den første bulk jobb, på hver påfølgende tillegg av en enkelt album, har du langt mindre å bekymre seg for.: Bare rippe CD som vanlig, og kjøre transkoderen å synkronisere kun de nye sangene Anmeldelser