Hlavní navigace

Cdbase - váš organizátor MP3

Jan Molič

Představte si situaci: Máte 100 cédéček plných MP3. Hledáte určitou skladbu, přičemž vůbec neznáte její název (sql databáze vám tedy moc nepomůže) nebo jen přemýšlíte, co si pustit, a názvy vám nic neříkají. V dnešním článku si představíme scriptík, který vám orientaci v záplavě MP3 elegantně usnadní.

Napsal jsem skript, který vytvoří „obraz“ CD na disku – zkopíruje adresáře a do nich:

  • zapíše krátkou ukázku z původního zvukového souboru
  • zkopíruje .m3u playlisty
  • zapíše prázdné soubory (v ostatních případech)

Obraz CD jednoduše „prolezete“ ENTERem, vyhledat soubor podle názvu také není složité, a navíc – ukázky.

Výrobní postup

Každá ukázka bude začínat v první minutě původního souboru a bude trvat 20s. Použijeme (samozřejmě) formát .ogg v nejhůře možné poslouchatelné kvalitě.

výroba ukázky OGG z MP3

Na mp3 nelze použít sox, mp32ogg jsem nenašel, proto jsem vytvořil rouru přímo z mpg123:

mpg123 --skip 2400 --frames 400 --4to1 --singlemix
 --8bit --stdout "zdroj.mp3" | oggenc --raw --raw-bits=8
 --raw-rate=11000 --raw-chan=1 --quality -1 -o "ukazka.ogg" -

Parametry mpg123 říkají, že má začít přehrávat na framu 2400 (cca po 1 minutě) a přehrát 400 framů (cca 20s). Bude tak činit mono, 8bitově a nekvalitně (11 000Hz). Výsledek pošle na standardní výstup.
Na standardním vstupu oggenc tedy nalezne data ve formátu raw, proto mu musíme upřesnit jejich parametry. (Rourou není vhodné posílat wavy, neboť součástí jejich hlaviček má být výsledná velikost, kterou nelze ze streamu zjistit, nicméně jsem zjistil, že to jde :-))

výroba ukázky OGG z OGG

Sox, který by měl umět z oggu vytvořit přímo nový ogg, mi, bohužel, vytvořil „Segmentation fault“.
Chtěl jsem tedy okopírovat postup jako u mp3, jenže ogg123 umí jen skip framů, ne však přehrání jejich určitého počtu. Proto jsem použil sox alespoň jako přehrávač.

Vyrobil jsem rouru:

sox -t ogg /dev/stdin -t raw -r 11000 -c 1 -b -u
 /dev/stdout trim 60 20 < "zdroj.ogg" | oggenc --quiet
 --raw --raw-bits=8 --raw-rate=11000
 --raw-chan=1 --quality -1 -o "ukazka.ogg" -

Ptáte-li se, proč bere sox zdrojová data ze standardního vstupu – neumí totiž mezery v názvech souborů, ať už backslashovaných, nebo i ouvozovkovaných.
Výsledkem je opět raw a zbytek je totožný.

výroba ukázky OGG z WAV

Jako u bodu 2, pouze rozdílný vstupní formát pro sox.

ostatní nekomprimovaná RAW audia

Z nich ukázky nedělá (ačkoliv by šel použít postup jako v bodě 3), neboť je nutné znát u každého zvuku sample rate, počet kanálů,…

Použití

Vzhledem k tomu, že pracuji s php, skript je napsán v php. Jasně, není to Perl, není to Bash, není to… Není to jedno? (Především není těžké ho přeložit třeba do Perlu s využitím knihoven bez nutnosti rour, rád se poučím.)

Po spuštění budete dotázáni, odkud se má načítat – defaultně z /mnt/cdrom. Další dotaz se bude týkat místa ukládání – defaultně do aktuálního adresáře. Osobně skript používám tak, že ho mám v adresáři „cdbase“ a jako druhý dotaz vkládám názvy CD (např. „HUDBA 26“), které se tím uloží do podadresářů.

ls -a cdbase

    HUDBA 26
    HUDBA 12
    cdbase*

Výsledek: všech 100 CD se „vejde“ na jediné, což je, myslím, velmi praktické.

Našli jste v článku chybu?

26. 11. 2002 7:46

Adino (neregistrovaný)

Ja som si na tieto ucely nakodil maly dir2xml programek ktory si ulozi mimo takych veci ako bitrate nazov ci dlzka aj mp3tagy (vie id3v1.x a id3v2.x) do XML. (oggy to zatial nevie , resp. neskusal som ) Vysledok planujem pouzit vstup pre php aplikaciu prehliadaca. Priklad uz hotovej aplikacie: http://people.ibl.sk/adino/new/cd_catalog/catalog.php3 (to je len hruby obraz ako by to malo vyzerat) a xml suboru napr. http://www.adino.sk/cedecka/xml/cdm_0042.xml.

19. 11. 2002 9:23

uživatel si přál zůstat v anonymitě

Tiez pouzivam nieco podobne, "ls -lR /mnt/cdrom > cdXX/ls-lR", na vyhladavanie tiez grep, alebo mc do toho dokaze vliest ako do adresara.

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

DigiZone.cz: Flix TV startuje i na Slovensku

Flix TV startuje i na Slovensku

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?