Portál AbcLinuxu, 17. července 2025 22:48


Dotaz: Kodování během ripování v konzoli

11.3.2004 21:09 Fluff
Kodování během ripování v konzoli
Přečteno: 120×
Odpovědět | Admin
Zdravím, jsem jen mírně pokročilý BFU, prosím neporadil by mi někdo, jak zařídit, aby se právě ripovaná skladba (cdparanoia) _zároveň_ kódovala (oggenc)? Čekání až se stáhne celá skladba se mi zdá zbytečné, když se mezitím už stažená data můžou dávno ukládat v OGG/MP3. Slyšel jsem něco o rourách, ale nevím jak na to. Někdo mi ale říkal, že by to stejně nefungovalo, protože když je ripování pomalejší než kódování, tak by se to porouchalo...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.3.2004 21:47 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Kodování během ripování v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin
Roury fungují pomocí příkaz1 | příkaz2, kde znak "|" předává výstup prvního příkazu ke zpracování druhému příkazu. Viz také BASH - II.

Co se však ripování a následného kódování týče, určitě by to znamenalo výrazné zvýšení rychlosti? Vždyť samotný proces stáhnutí stopy z CD je docela rychlý, ne?

Nejjednodušší je použít nástroj, který už někdo připravil pro stejný účel před tebou. Třeba rip nebo rip-utils.
11.3.2004 22:15 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Kodování během ripování v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin
A mam novou zabavu: ripovani audio-cdcek :-))

O rourach jste slysel velmi spravne:
cdparanoia 1 - | oggenc - >skladba01.ogg
cdparanoia vypise data na standardni vystup (ktery je zvykem oznacovat minusem), svislitko rika shellu, ze ma standardni vystup programu vlevo presmerovat na standardni vstup programu vpravo a oggenc si ted standardni vstup precte (zase minus, ale je zrejme, ze jde o vstup), prekoduje a vypise na standardni vystup, ktery bash presmeruje do souboru skladba01.ogg.

Vada na krase je, ze oba programy pri sve cinnosti jeste vypisuji na terminal, takze by bylo dobre spustit kazdy v jinem terminalu a pouzit "pojmenovanou rouru" (named pipe):
mkfifo pajpa
cdparanoia 1 pajpa
a v jinem terminalu
oggenc pajpa -o skladba01.ogg
Jestli se chcete dozvedet neco vic o rourach a spol., tak si prectete jakoukoliv knizku o Unixu/Linuxu. Navic "roury" byly i v shellu MS-DOSU (ale emulovane pres tmp soubor, tudiz efektivita veskera zadna), takze informaci je urcite dostatek. A samozrejme man bash ;-)

Nenapada me, proc by to nemelo fungovat, cdparanoia nemusi ripovat v kuse (a snad na to nepotrebuje zadnou spolupraci cd mechaniky), stejne tak oggenc muze cekat na vstup. Nemluvil ten clovek o vypalovani?
12.3.2004 01:19 Fluff
Rozbalit Rozbalit vše Kodování během ripování v konzoli
Dík, to jsem přesně potřeboval. Ale co se stane, když je ripování rychlejší než kódování (na mém stroji běžná situace)? Oggenc očekává data, ale ta nepřicházejí, protože cdparanoia třeba zrovna opravuje škrábanec...
12.3.2004 01:22 Fluff
Rozbalit Rozbalit vše Kodování během ripování v konzoli
...ripování pomalejší než kódovaní (už je pozdě)
12.3.2004 03:25 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Kodování během ripování v konzoli
Nic, proste se ten oggenc zablokuje ve volani read a kdyz jsou data k dispozici, tak bezi dal. Zadne "real-time" pozadavky nema (nepracuje s HW) tak muze spat jak dlouho je treba. Podle me ten clovek mluvil o vypalovani, kde muze byt problem, kdyz cdrecord nema data a ta mechanika neumi pri vypalovani "pockat".

Ted uz je ale fakt pozde...
12.3.2004 06:58 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Kodování během ripování v konzoli
... svislitko ... - krasny vyraz :-D
15.3.2004 16:39 Endi
Rozbalit Rozbalit vše Kodování během ripování v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, nevěděl by někdo jak to ošetřit v programu? Bohužel moc nevidím ani do programování, ani do unixu, prosím pomožte. Jediný co mi fungovalo bylo tohle:
#!/bin/env python
 
import os
 
def feed():
  (stdin, stdout) = os.popen2('cdda2wav -t10 -D /dev/cdrom - 2>/dev/null', 'r')
  return stdout
 
def eat(stream):
  stdin = os.popen("oggenc - >track01.ogg", 'w')
  stdin.write(stream.read())
 
data = feed()
eat(data)
ale i takhle proces čeká až zkončí ten první. Díkes.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.