[ Részben megoldva ] Bzipped wav player van Androidra?

Fórumok

Bzip2-vel tömörített wav fájlokat szeretnék lejátszani Android telefonon, de nem találtam erre alkalmas programot.

Létezhet egyáltalán ilyen program? Ismer valaki hasonlót, vagy valami más módot, hogy bzip2-vel tömörítve tárolja a telefon a wav fájlokat, de lejátszhatók legyenek az Androidból?

Eddigi megoldás:

A VLC közvetlen lejátsza a .wav.bz2 fájlokat, de csak friss Androidokon. Régebbi Android verzió esetén, amire már nem telepíthető friss Android (pl.: 5-ös, amilyen az én készülékemen is van), még nincs megoldva a feladat.

Hozzászólások

Attól tartok, hogy a korrekt megoldás az fájlok átcsomagolása lesz valamilyen lossless audio formátumba... (FLAC és társai)

Ezt te sem gondolhatod komolyan. A bzip/bzip2 nem sokat tömörít wav fájlokon, és elég lassan kódolható kifelé. Használj valami normális lossless formátumot, flac, wavpack, vagy valami hasonló, ami jobban tömörít, és erre való. A flac a legjobb választás, mert ma már azt szinte minden lejátssza.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Speciális wav fájlok. A bzip2 tömörít rajtuk a legtöbbet. Kb 1%-ra nyomja őket össze. A gzip több mint 5-ször nagyobb fájlokat hoz létre. Próbáltam más tömörített formátumokat is, bár konkrétan flac-t még nem (nem tudom, arra milyen lejátszók vannak androidon), de minden kipróbált tömörített formátum sokkal rosszabb tömörítést ad, mint a bzip2. Magam is meglepődtem, de ez van.

Na, még olyat se láttam, hogy 1%-ra tömöríteni wav fájlt. A legjobb, amit láttam, az kb. ilyen 35% körül volt, de normál emberi beszédnél, meg átlag zenéknél 50-70% jellemzően. Persze ki tudja, vannak kivételek. Legutóbb most én is találkoztam olyannal, hogy előbb zstd -1 segítségével tömörítettem egy 440 megás adatfájlt, majd erre rá xz-vel, és így 96 KB helyett (csak xz -19 segítségével tömörítve) csak 2,8 KB lett. Fura, de előfordulnak ilyen szélsőséges esetek.

Ennek ellenére nem sok esélyt adok, mert ami androidos szoftver egyáltalán támogatja is a csomagolt wav-ot (tuti marha ritka), az jó eséllyel a bzip2-őt nem fogja tudni.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Szerkesztve: 2022. 04. 19., k – 17:37

Igen, biztosan jobban jársz, ha áttömöríted valamilyen hangformátumra, pl. FLAC. Ha nem kell, hogy veszteségmentes legyen, akkor meg ogg.

A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.

Kipróbáltam az egyik fájlommal egy online FLAC konverterrel: https://convertio.co/

Az eredmény a következő:

Eredeti wav fájl mérete: 5.1M

Eredmény FLAC mérete: 2.9M :(

Bzip2 tömörítéssel: 42K

Tehát úgy tűnik, továbbra is az a kérdés, lehet-e bzip2-vel tömörített wav fájlokat lejátszani Androidon.

Sajnos nem minden gép számára egyformák ezek a formátumok. Még a ".cas" formátum sem, ami pedig eléggé elterjed, bár a fenti programok már azt sem kezelik. Tapdancer, meg tzxplayer az jó a spectrum és commodore gépekhez, bár már a ZX81 ".tzx" fájljait sem kezeli. Egyéb, extrémebb gép esetén pedig reménytelen egyedi playert találni, azonban a wav mindenhol kigenerálható valahogyan.

Nincs valami célszoftver erre?

Ez például nem ilyesmi? https://paleotronic.com/software/tapdancer/ 
Nem ismerem, csak kidobta a kereső. Lehet play storeban is van hasonló.
Sőt, még ennek a nevére keresve is kidob egy csomó hasonlót a store https://play.google.com/store/search?q=tapDancer

zenejátszó kis eséllyel fog neked ilyet játszani, de lehet valaki már megcsinálta a kazettás magnó emulátort retro számítógépekhez telefonra.
Plusz lehet van már egy létező digitális formátum a kazetta mentésekhez adott platformon, szóval lehet nem neked kell újra feltalálni ezt.

De ha mindenképpen ragaszkodsz ahhoz, hogy zippelt wav-okat játsz le, akkor lehet a kodi meg tudja nyitni őket, talán kell hozzá addon
https://kodi.tv/addons/matrix/category/virtual-filesystems

https://kodi.tv/addons/matrix/vfs.libarchive
This add-on uses the libarchive library to read a variety of archive and compression formats.[CR][CR]Supported formats are:[CR]7z, bz2, gz, tar, tar.bz2, tar.gz, tar.xz, tgz, tbz2, xz, zip

Ja, így világos, de erre meg vanna speciális célprogramok Androidon is, amik a futó kód bináriást töltik be (nem wav-ot, hanem a nyers adatbiteket), és ebből generálnak menet közben wav-ot, ami át tudsz juttatni régi otthoni mikrónak.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Feltételeztem tévesen, hogy valami népszerű mikróról van szó, Commodore, ZX Spectrum vagy hasonló, amihez van ilyen. Erről az EG2000-ről még nem is hallottam, így nem tudom, hogy ehhez van-e. Passz. Akkor csomagolt wav vissza, de én abból is inkább akkor már zstd-vel vagy xz-vel próbálkoznék.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Vagy csak simán mp3-ba. Úgy sem hallod a különbséget.

Szerkesztve: 2022. 04. 19., k – 20:09

Valószínűleg valamilyen lossless formátummal jársz a legjobban, pl. FLAC formátumot még az Android 10 beépített lejátszója is támogatja. De a konkrét problémára is van megoldás, VLC for Android megeszi*, sima audio.wav.bz2 és audio.tar.bz2 formátumban is. Érdekes, mert a desktop verzió Windowson nem boldogul egyikkel se, ellenben tudja kezelni a 7z formátumot, ami viszont a mobil verziónak nem megy.

* Azt nem tudom, hogy lejátszás előtt a teljes fájlt kitömöríti-e, vagy képes lejátszás közben kitömöríteni.

Nálam Android 10-en a 3.4.4-es verzió van telepítve (Több → Névjegy) ami február 14-én frissült. Azt írja Android verziótól függ melyik verzió elérhető, de nem listázza a verziókat.

Egyébként a VLC changelogban megtaláltam a releváns sort, ez alapján az 1.0.0-ás verzió óta elérhető a feature. Viszont az gyanús, hogy Windowson nem támogatott, ez alapján el tudom képzelni, hogy Android verzió függő. Libarchive-ot használja, még akkor is ha évekkel ezelőtti verzió, kétlem hogy bzip2-t ne ismerné.

A nyers WAV-ot le tudja játszani egyébként?

Közben az éles telefonomon is kipróbáltam, és ott tényleg megy kapásból.

De azon a készüléken, amelyiket erre delegálnám (Samsung Galaxy J3 - 2016), nem. Bár nálam is 3.4.4-es verzió települt, bár csak 5.1.1-es Android.

Érdekes azonban, hogy a lejátszás elindul, csak hallani nem lehet semmit. A tömörítetlen wav rendben megszólal. Ezek szerint valamilyen Android komponenst kellene még telepíteni? Vagy esélytelen lesz 5-ös Androidon?

Érdemes lehet valami alternatív Androiddal próbálkozni?

Hát, a demuxolás nekem túl sokat nem mond, de én a mod szót inkább csak modulnak gondoltam. Már csak azért is, mert a hibaüzenetre guglizva hasonló hibát adhat mod=mp3 üzenettel is. De válaszolva a kérdésedre: nem, a fájlnév nem mod.wav.bz2 hanem csak wav.bz2 végződésű. Előtte a program neve, dátuma, néha a nyelve, és sok egyéb szerepelhet, de nem egységesen.

Javaslom, hogy állj át a flac formátumra, max minőséggel tömörítsd, picit lassabb, de kisebb lesz a file.

Ott a foobar, vlc és egyéb lejátszók a flachoz.

Honnan jött ez a bzip2.wav ? Még nem találkoztam soha sehol, hogy így lenne.

Szerkesztve: 2022. 04. 20., sze – 19:15

Max minőség? Mihez?

Ezeknél a normál zenéhez képes nagyon kevés "hallható" információ van a fileokban.

Jóval kisebb bitmélység és mintavételezési frekvencia elég mint a zenéhez (8 bit, 8kHz és mono, de ADPCM esetén lehet a 4 bit is elég). 

Ilyen wav formátumban próbáltad már? Mert lehet ezt már nem is érdemes tömörítgetni és ezt szerintem kb .minden le fogja játszani.

Az a program, ami a digitális fájlból wav-ot csinál 44khz-es mintavételezést használ. Más konverterek is 44 vagy 22khz-et használnak. Nem akartam elmélyedni a kazettás tárolás tehcnológiájában, és újraírni/megérteni a tároló konvertereket. Azt gondolom, oka van, hogy 44khz-et használnak. Annakidejéről emlékszem még, hogy elég kétséges volt egy program betöltése a magnó/szalag minőségétől függően. Tehát el tudom képzelni, hogy a minőség itt mégiscsak számít valamit.

Próbáltam például 1 bites wav-ra konvertálni, mert arra találtam programot. De az eredmény sokkal rosszabb lett, mint a bzip2.

1 bites wav?

44kHz mintavételezés -> mihez kell a 22 kHz-es freki, kazettáról??? 

Mit jelent hogy rosszabb? Beolvassa vagy nem? Itt ez számít, nem hallgatni kell.

Anno én kifejezetten "data" magnókazettákat használtam - próbáltam zenére is, füllel hallhatóan nem volt a felvételben "magas" hang, olyan volt a szalag anyaga, de nagyon bírta a strapát és itt ez volt a lényeg.

Szerintem megérné elmélyülni ebben egy kicsit....

 

Ha adsz egy konkrét mintát próbálok egy olyat csinálni neked, aminek működni kell, és valószínű legkisebb lesz zippelés nélkül is.

A küldött file 2.6M volt, ebből lett tömörítés nélkül 480k olyan formátumot használva, ami tartalmazza a  szükséges információt, de semmi felesleget, ez tömörítve 120k u-law esetén.

ADPCM-mel a nyers file 240k, tömörítve 50k.

https://tmpfiles.org/268929/systeminvasion_adpcm.wav

Rendben, köszönöm. Az igaz, hogy a 2.6M-nál a 480k jobb, de 200k-400k közötti fájlméreteket el lehet érni más tömörített formátummal. Számomra érdekes módon még az adatvesztéses tömörítéssel is sikeresen beolvasta a programot, bár sajnos ez a gép, amivel most konkrétan használom, nem ment le semmilyen crc vagy paritásbitet az adatba, így igazából az sem derül ki elsőre, hogy sikeres volt-e a beolvasás. Ha nagyon gáz,  lenne, persze el sem idnulna, de ha csak valamilyen adatterület sérül azt lehet észre sem veszem.

De engem azért az nagyon meglepett, hogy a bzip2 még ezeknél a nagyon jó tömörítéseknél is tízszerte kisebb fájlt készít. És köszönöm ugyan az adpcm-et, de az 50k még mindig több, mint a 26k, amit a cas formátum wav konverziójából közvetlen bzuippeléssel kapok. Így egyelőre maradok annál, hogy ezt a bzip formátumot próbálom meg lejátszatni.

"Annakidejéről emlékszem még, hogy elég kétséges volt egy program betöltése a magnó/szalag minőségétől függően"

- a Commodore gépcsalád kazettás megoldását viszonylag sokat használtam, annyira igénytelen a formátum, hogy gyakorlatilag a frekvencia sem nagyon számít, képes elolvasni az adatot (még a turbos formátumot is), még nem-standard lejátszási sebességnél (elállított motor fordulatszám) is. Most pofoztam ki két datasettet is, a negyvenéves szalagok hibátlanul olvashatók, egyedül a fejrés beállítására érzékeny az olvasásnál, de az érthető is.

"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Azért a commodore magnója egy elég egyedi példa. A commodore ugyanezt az ezközt használta a CBM termékcsaládjában is, ami azért mégiscsak más minőség. Ráadásul a commodore magnó digitálisan kapcsolódik a géphez, a digitalizálást maga a magnó végzi. Amiket én használtam, azok a mindenféle BRG és társai, utcai magnók, ezer féle fejálással, szalagminőséggel, és analóg kötve a géphez. Még a HT 1080-Z is elég érzékeny volt a szalagjaira, bár annak már egységes beépített magnója volt.

Anno kétkazettás magnóval (nem deck!) másoltam utántöltős, másolásvédett programokat -analóg átvitel ugyebár -és tökéletesen olvasható volt a kópia is. A hasznos jel elvileg 1kHz környékén van, 0/-3dB kivezérlésnél elég alacsony a jel/zaj-viszony, hogy jól megkülönböztethető legyen a hasznos jel, simán elolvassa bármikor bármi, akár egy lestrapált szalagról is. 8kHz-es mintavétellel is működnie kell.

"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Én úgy gondolom, hogy az EG2000 (ha jól értettem a gép típusát) sem használhat túl bonyolult tárolási algoritmust, már csak a kora és a technológiai korlátok miatt.
Itt egy open source projekt ami ZX Spectrum wav-ból képes kinyerni a bináris adatokat.
Ha Audacitivel ránézel a wav fájlra, jó eséllyel láthatóvá válnak benne a "bitek" ami alapján "átbarkácsolható" ezt a Python kód, hogy olvassa a te formátumodat. Ha már megvan a bináris adat akkor arra meg lehet "hanggenerátort" készíteni ami akár Androidon is le tudja neked játszani a gép számára.

https://github.com/shred/tzxtools/blob/master/docs/tzxwav.md

Hogy mennyi valós haszna van ennek amit fent leírtam nem tudom, de hobbinak érdekes lehet. Meg tudnál osztani egy ilyen wav fájlt az érdekesség kedvéért? /mert most már sport értéke van. :) /

Azt a reszet nem ertem, hogy ha a wav-odat egy pythonos program generalja egy apro adatfile alapjan, akkor miert nem teszed a programot es az adatfile-t is a telefonra? Esetleg meg on-the-fly le is tudod jatszani sox-szal, ha a pythonos progi nem tudja.

Felmesz az f-droid oldalara, felteszed onnan a termuxot, aztan apt install python, apt install sox, felparameterezed, es meghivod. Esetleg meg bash scriptet is irhatsz ra, ha nem akarod megjegyezni a megfelelo parameterezeset.

A strange game. The only winning move is not to play. How about a nice game of chess?

Azt a részét nem értem, hogy hogyan tudnám ezeket a telefonra tenni. A konvertáló program általában valamilyen C program. Egyes esetekben ez közvetlenül futtatható linuxon, más esetekben csak windows exe áll rendelkezésre a konvertálásra. De ha a linuxos kódokat nézem is, akkor sem tudom, a telefonra hogyan tudnám úgy feltenni, hogy ott egy kattintással elinduljon, konvertáljon, és ki is adja a hangot. Nagyon nem mélyedtem még el a telefonok lelkivilágában, de egyelőre csak azt a módot látom, hogy csinálhatnék - mondjuk Android studióval - egy java kódot, amit apk ként feltelepítek a telefonra. Ez, bár járható út lenne, de nem sétagalopp. Ennél egyszerűbb megoldást keresek, bár ez tagadhatatlanul nagyon szép lenne. De, hogy egy linux futtahatót hogyan indítok el egy teljesen más processzorú telefonon orbitális szopás nélkül, azt nem látom.