Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Vláďa J

Stran: 1 2 [3]
31
Vývoj / Pomoc se strukturou databáze
« kdy: 12. 12. 2011, 17:03:20 »
Ahoj,

Vyvíjím v PySide/QML multimediální přehrávač. Zatím zvládá pouze hudbu, ale do budoucna počítám i s videem. To ale není podstatné.

Jeden z hlavních důvodů, proč jsem se rozhodl vytvořit vlastní přehrávač je to, že jsem potřeboval takový, který půjde ovládat prstem na dotykovém displeji a bude mít dobrou správu knihovny (dynamické playlisty, třídění podle žánru, umělce, alba atd.) Žádný takový přehrávač není (nebo jsem na něj zatím nenarazil), tak jsem si napsal svůj vlastní.

Jeden z problémů, který řeším, a jako naprostý laik v této oblasti neumím posoudit, je struktura databáze pro knihovnu. Momentálně mám pouze jednu databázi, ve které je na každém řádku asi 20 údajů ke každé písničce. V přehrávači potom s každou písničkou pracuji jako s objektem můžu se odkazovat na tyto vlastnosti. Takhle to funguje a je to i relativně rychlé.

Problém nastává, jako když si třeba teď vzpomenu, že u každé písničky chci mít nově přístupný nějaký nový údaj z tagů (teď je to BPM, příště to bude třeba počet přehrání). Jak tohle efektivně vyřešit? V mém případě to znamená přepsat kód na několika místech, smazat databázi a vytvořit novou s jiným počtem řádků. Samozřejmě po prvním spuštění na mě vypadne spousta chyb, protože aktuální databáze bude mít jiný počet řádků.

Jaké je správné a efektivní řešení mého problému? Fascinuje mě rychlost a funkčnost přehrávače foobar2000. Chtěl bych dosáhnout něčeho podobného. V podstatě celý kód, který pracuje s daty a databází je napsaný v Pythonu 2.x s SQLite pluginem, v tom by snad problém být neměl, doufám. Qt/QML je použité pouze pro uživatelské rozhraní.

Práce s databází (například vyfiltrování všech skladeb jednoho žánru) musí být dostatečně rychlá (do 0,1s). Navíc přehrávač používám na UMPC s Atomem, do budoucna ho možná portuju i na telefony s Androidem (až bude PySide pro Android) a další zařízení s podporou Pythonu a Qt. Každopádně mi na výkonu poměrně dost záleží a bojím se, že pokud udělám tabulku třeba se 100 sloupci, bude to mít negativní vliv na rychlost.

Předem díky za rady.

32
Vývoj / PySide + QML (alias QtQuick)
« kdy: 15. 11. 2010, 17:21:28 »
Zdravím,

chtěl bych se poradit se zkušenějšími ohledně použití PySide (LGPL alternativa PyQt od Nokie) a QML (Qt Quick). Už nějakou dobu se snažím vytvořit přehrávač s dotykovým ovládáním vhodný pro zařízení s displejem okolo 5" (mám momentálně 5" MID, kvůli kterému chci hlavně takový program napsat).

Mám takový polofunkční prototyp udělaný v PyQt, ale bohužel rekace GUI a celkově ovládání prstem má do ideálu celkem daleko.

Po vydání Qt 4.7 jsem viděl demo QML a to mě uchvátilo. Tohle je to, co chci. Mou cílovou platformou jsou Windows a Linux, což QML splňuje. Proč k tomu PySide? Mám již hotovou logiku přehrávače včetěn práce s databází v Pythonu. Navíc v C++ neumím.

Zatím se mi ale nedaří najít moc informací ohledně vývoje aplikací v PySide+QML. Našel jsem nějaké příklady, které ale na Windows nefungují. V Ubuntu se mi zase nechce PySide nainstalovat kvůli konfliktům ve verzi. Navíc mi pořád trochu uniká logika fungování. Pokud to chápu dobře, tak reakce GUI vlastně neřeším v Pythonu, ale píšu je v .qml souboru pomocí JavaScriptu (který neumím, ale holt bych se to doučil). Jenže mi není moc jasné, jak by fungovala následující věc:

Základem je pro mě menu pro výběr souboru, který má hrát. Představoval bych si ho jako 5 sloupců, ve kterých budou položky: dynamický playlist/žánr/umělec/album/skladba. V landscape režimu budou zobrazeny 2 sloupce, v portrait pouze jeden. Mezi sloupci se budu moct pohybovat posouváním v horizontálním směru. Vertikálně si potom budu vybírat položku z daného sloupce. A teď v čem vidím problém: Vyberu si ve sloupci "umělec" třeba "The Beatles". V tomto okamžiku potřebuji, aby se mi sloupce napravo zaplnily alby Beatles a všemi skladbami. Zároveň sloupec "umělec" odjede z displaye doleva a zobrazí se sloupec "alba" (již pouze s alby Beatles). Otázkou nyní je, jestli se tohle dá provést v dostatečně krátkém čase, aby reakce GUI byla "rozumná".

V podstatě to znamená, že GUI (přes JavaScript) musí poslat jádru programu informaci, že jsem kliknul na "The Beatles" ve sloupečku "umělec". V Pythonu se spojím s sqlite databází a vytáhnu všechna alba a skladby od Beatles. Tyto dva seznamy potom pošlu GUI, které musí dané listy vykreslit. Potom se sloupce posunou doleva tak, aby se zobrazil sloupec "album". Je toto reálné? Vzhledem k tomu, že mířím na přenosná zařízení s nevalným výkonem, tak se bojím, jestli nejsem moc náročný. Na druhou stranu podobně fungující GUI mají některé přehrávače na Androidu psané v Javě a fungují obstojně rychle.

Co si vůbec o mém nápadu myslíte? Je to reálné nebo to mám rovnou vzdát?

33
Vývoj / Re: Audio přehrávač
« kdy: 01. 04. 2010, 13:21:48 »
Na to proč Python, je poměrně jednoduchá odpověď. Umím jenom Python, PHP a malinko Javu. Program nemusím kompilovat a dobře si mi v tom jazyku dělá. Při mém pokusu s PyGTK jsem přehrávač s knihovnou naprogramoval za jeden den. Akorát jsem předtím musel pár dní studovat, jak zprovoznit multithreading ve Windows s GTK+.

V Pythonu lze používat i C/C++ moduly, nedávno tu na to byl na Rootu dokonce návod.

V PyQt bude v podstatě napsané pouze GUI, celý systém přehrávání a práce s multimédii bude fungovat přes Phonon, SQLite a knihovnu MediaInfo. Jinak by byl ten program značně pomalý, což je přesný opak toho, co chci.

Ještě se zeptám: jaký by byl ideální formát pro soubor popisující layout (GUI) přehrávače? Myslel jsem na XML, které by popisovalo rozmístění a parametry komponent. Je pro tohle XML vhodné? Jak s ním vůbec ideálně pracovat?

Zkrátka chtěl bych mít všechno promyšlené než začnu, abych se potom zbytečně nedostal do slepé uličky. Což se mi ale nakonec stejně stane. :-)

34
Vývoj / Píšu vlastní audio přehrávač
« kdy: 31. 03. 2010, 23:28:20 »
Ahoj,

protože jsem nespokojený v podstatě se všemi přehrávači hudby, které existují, rozhodl jsem se vytvořit vlastní. Je to hodně velký úkol, vzhledem k tomu, jaký jsem programátor, ale člověk si musí dávat vysoké cíle.

Můj přehrávač má být pouze přehrávač, žádný nakupování hudby, ripování CD atd. Má mít knihovnu, dynamický playlisty, frontu na přehrávání a být pokud možno rozumně rychlý.

Kdy jsem se o to už pokusil pomocí PyGTK, ale ztroskotal jsem na tom, že jsem nedokázal v rozumné době vypsat do GUI obsah větší knihovny. Jinak jsem naprogramoval celkem rozumně prohledání adresáře s hudbou, nasypání do databáze, filtrování písniček z databáze a přehrávání (pomocí MPlayeru).

Nyní bych to zkusil rád pomocí PyQt4 a Phononu. V instalaci je nějaký jednoduchý ukázkový přehrávač, takže bych neměl mít problém se zprovozněním přehrávání. Chci se ale zeptat na pár věcí, u kterých si nejsem jistý, jak je udělat a jestli je vůbec moje představa reálná.

1) Jak na databázi? PyQt4 už přešel na Python 3, ale zdá se, že Pysqlite je zatím maximálně pro verzi 2.6. Našel jsem ale modul SqlAlchemy a ten funguje dobře. Navíc by mělo jít u větší kolekce nahradit SQLite PostgreSQL. Je tohle dobrá volba?

2) GUI přehrávače by mělo být zcela modulární poskládané z komponent. Komponenty by měly jít doinstalovat. Zkrátka něco na způsob toho, jak to umí foobar2000. Je mi jasný, že bude třeba vytvořit nějaký API, kterým si budou mezi sebou předávat informace (co vyfiltrovat, co je v playlistu, co hraje, co zobrazit atd.) Rád bych, aby mohli i další vývojáři doprogramovat své moduly do GUI. Ale hlavně vůbec nevím, jestli jde například prohledat nějaký adresář a načíst všechny *.py moduly. Tohle je věc, ve které nejvíc tápu. Navíc bych rád, aby program fungoval i ve Windows pomocí py2exe a tam už jsem úplně mimo.

3) Viděl bych to tak, že layout GUI bude definovaný pomocí XML souboru, něco podobnýho, jako to má Songbird.

4) Co na to říkáte? Je to blbost a mám se na to vykašlat nebo to má naději?

Stran: 1 2 [3]