# Streamripper

Streamripper è un programma stand-alone o un plugin di Winamp che registra flussi in streaming su internet e li converte in files MP3 o Vorbis. Ha la peculiarità di potere sovrascrivere files. Solitamente si trova correlato al programma Streamtuner
Streamripper nacque nei primi mesi del 2000 per riuscire a separare le tracce dei flussi in streaming di Shoutcast sfruttando i metadati del protocollo icy che sta alla sua base. Ultimamente tale funzione è stata ampliata ed è infatti molto più generica. Il programma sostanzialmente cerca di suddividere il flusso basandosi non solo sui metadati icy, ma anche sui periodi di silenzio.
Streamripper fa adesso parte della distribuzione standard di FreeBSD, menzionato nel Linux MP3 HOWTO, e può essere compilato su molte piattaforme, tra le quali Linux, Microsoft Windows, FreeBSD, BeOS and OS/2. Si è molto puntato sulla portabilità del software.
A differenza della condivisione di files tramite p2p, che necessita della conoscenza anticipata di quanto si desidera scaricare, Streamripper registra senza distinzioni o filtri.

## Dettagli di funzionamento

Streamripper registra flussi in streaming come quelli di Shoutcast ed Icecast. Usa metadati trasmessi insieme al flusso per determinare inizio e fine di ciascuna canzone, e salva le canzoni come mp3 oppure ogg separati o in un'unica maxi traccia. In aggiunta, Streamripper permette di creare un relay per l'ascolto della stazione che stai registrando.
Streamripper effettua il taglio tra un file ed un altro, quando incontra un attimo silente, ovvero un momento in cui non c'è effettivamente alcun suono. Se non lo trova fa quello che può, ovviamente dopo l'invio dei metadati per il cambio di canzone. Questo periodo in cui si cerca il punto di silenzio è chiamato search window. Questa finestra, specialmente se ci si trova in casi di crossfading tra i brani, può essere allungata a piacimento.
Nel caso in cui non si trovi un attimo silente, allora si supponga di avere delle meta informazioni di cambio, al tempo MI. Se l'offset XS è positivo (XS_offset setta il tempo della search window, e può essere positivo per tagli in avanti, e negativo per tagli all'indietro) il separatore TS della canzone è dopo il tempo MI. Se xs_offset è negativo, il viceversa. Una volta determinato questo istante TS (che è dato da: Metadata + Offset) un “Prepad” e “Postpad” sono impostati, e tutto quello che sta compreso tra Prepad e Postpad sarà copiato in entrambe le canzoni.
La separazione basata sui silenzi è simile alla separazione standard, solo un po' più complessa. Ancora, supponiamo che al tempo MI ci sia il cambio di canzone con metadati connessi.
Una finestra di ricerca denominata “search_win” viene determinata dai campi xs_offset, pre_sw e post_sw. Questa finestra comincia all'istante mi + xs_offset - pre_sw e termina all'istante mi + xs_offset + post_sw
Se c'è un momento di silenzio di grandezza “silence_win” insieme alla finestra di ricerca il punto centrale del momento di silenzio è selezionato come separatore di traccia. Una volta determinato il punto TS (track separator) i campi prepad e postpad, sono utilizzati per selezionare quali parti verranno copiate in entrambe le canzoni.