Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

File not found

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: File not found

Autor: xp3

20:48:55 17.05.2005

Ještě mě napadlo - zkus odstranit to DoEvents mezi voláním těch funkcí. Nevim, co to tam má za účel, ale je to snad jediný, co ještě může způsobovat chyby - jestli jsi se držel mejch předchozích rad.

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

20:36:24 15.05.2005

No jo, snad už to nebude dělat problémy..

Nakonec jsem tam dal jenom tohle:
[quote]
On Error Resume Next 'to to spadnuti asi nezabrani, ze?
RetCode = waveInStop(WaveInHandler)
DoEvents
RetCode = waveInClose(WaveInHandler)
DoEvents
[/quote]

...zjistil jsem, že ikdyž to spadne, tak se ten soubor dá přehrát.. takže hlavně ať to při běhu nehodí nějakou chybu :)

ještě jen takový dodatek:
24kbps/32kbps, sample 8, lze encodovat jen n 1 kanálu (mono), jinak nastane chyba
128 kbps, sample 8/16, 1 i 2 kanály, (mono/stereo)
...je to jen taková maličkost, ale aby si někdo, kdo to bude zkoušet nemyslel, že mu to nefunguje.
Já jsem taky ze začátku vyzkoušel spoustu knihoven, ale žádná mi nefungovala! Problém byl ale v tom, že jsem zkoušel encodovat Wav->Mp3. Chyba byla ve wav souboru, který jsem vždy zkoušel převést. Nevím proč, ale byl to nějakej divnej soubor - prostě v ničem to nešlo, ani v CDex.


Ještě ke knihovně gogo.dll - jak je to s licencí? Můžu to normálně poskytovat k mému sw, nebo ne?

Citovat příspěvek

 

Re: File not found

Autor: xp3

20:01:16 15.05.2005

Trošku jsem prostudoval msdn takže:

waveInStop zastaví nahrávání
waveInReset zastaví nahrávání, vynuluje pozici, všechny "nevyřízené" buffery označí jako vyřízené a vrátí je aplikaci
waveInClose zavře vstup, důležité ale je, že handle po zavolání téhle funkce už nebude platný, takže je blbost volat ještě waveInUnprepareHeader po waveInClose. Může to vyvolat chybu.

Ta chyba při waveInReset je fakt divná. A už vůbec nemusíš volat waveInStop 2x. Ale on je celej ten zdroják divnej. Dost se mi tam nezdá volání waveInPrepareHeader pokaždý před waveInAddBuffer. To je zbytěčný. Celý by si to zasloužilo přepsat. Ještě Ti posílám zdroják (ne muj), kde se všechny tyhle funkce používaj. Je to část jedný vizualizace k winampu, který mohla běžet i sama jako exe a k tomu potřebuje tyhlencty funkce. Jmenuje se WhiteCap. Doufám, že mě za to někdo nebude honit po soudech :) .Bacha je to v C++ a je v tom trošku bordel, páč to dokáže běhat i v jinejch OS, než sou windowsy. Snad se v tom vyznáš. To co dělá tenhle "náš" program je rozhodně blbě.

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

19:43:59 15.05.2005

Díky! Už mi to funguje.. mě dělalo problém waveInReset (při volání mi to spadlo), tak jsem to úplně odstranil..

Teď to mám takhle a funguje to:
[quote]
RetCode = waveInStop(WaveInHandler)
DoEvents
RetCode = waveInStop(WaveInHandler)
DoEvents
RetCode = waveInClose(WaveInHandler)
DoEvents[/quote]

Může to tak být? Nebude to mít nějaké "vedlejší účinky"?

Jinak předtím to bylo takto:
[quote]
Private Declare Function waveInReset Lib "winmm.dll" (ByVal hWaveIn As Long) As Long
...
RetCode = waveInReset(WaveInHandler)
[/quote]

Ještě jednou díky!

Citovat příspěvek

 

Re: File not found

Autor: xp3

18:01:47 15.05.2005

Nic jinýho tam nahrazovat nemusíš, tyhle deklarace by měly bejt takhle v pořádku.
Ale nejdivnější je, že mě to takhle funguje. V tý funkci StopRecording... no nevim, snad by se mělo volat waveInUnprepareHeader před waveInClose, možná, nikde jsem o tom nic bližšího nenašel, jen to takhle všude dělají. Postup je vždy waveInStop, waveInReset, waveInUnprepareHeader, waveInClose (snad). Tak to zkus nějak předělat, taky do toho musíš zamontovat zrušení Callbacku tak, aby to nedělalo chyby. Já to nemůžu otestovat, když mi to funguje. A v jaký verzi VB a Windowsů to děláš?

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

17:10:06 15.05.2005

Díky! STRAŠNĚ MOC MI TO POMOHLO. DÍKY!!

Teď mi to při zapnutí nahrávání už nepadá, ale pokud nahrávání ukončím, tak to chybu hodí.. (Call StopRecording)

Nahradil jsem teda jen ten jeden řádek, který jsi tam uvedl. Má se měnit ještě něco?

[quote]Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (dest As Any, Source As Any, ByVal Size As Long)
Private Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)
Private Declare Function GlobalAlloc Lib "KERNEL32" (ByVal Flags As Long, ByVal Size As Long) As Long
Private Declare Function GlobalLock Lib "KERNEL32" (ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "KERNEL32" (ByVal hMem As Long) As Long[/quote]

Vážně moc díky!!

Citovat příspěvek

 

Re: File not found

Autor: xp3

13:34:05 15.05.2005

Objevil jsem ještě 1 chybu:

je tam
[code]
Private Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlMoveMemory" (dest As Any, ByVal numBytes As Long)
[/code]

ale správně to je
[code]
Private Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)
[/code]

Autor si zřejmě spletl deklaraci s funkcí CopyMemory, kterou deklaroval hned nad tím. RtlZeroMemory = ZeroMemory a RtlMoveMemory = CopyMemory. Mě to teď funguje.

Citovat příspěvek

 

Re: File not found

Autor: xp3

11:06:08 15.05.2005

No, podivám se, zkusim to, ale nic neslibuju

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

22:06:26 14.05.2005

xp3: Nechceš pls podívat na ten příklad z http://www.vbcode.com/code/WavMp3Rec04152003.zip
Nevím, proč to po kompilaci padá.
Na planet source je příklad s gogo.dll, který běhá bezproblémů http://pscode.com/vb/scripts/ShowCode.asp?txtCodeId=50842&lngWId=1
Neměl bys chvilku času se podívat v čem se to liší.
Příklad z vbcode mi přijde jednoduchý a užitečný, jen nemůžu přijít na to, co je tam za chybu.. (teda kromě chyby s názvem modulu)
Díky

Citovat příspěvek

 

Re: File not found

Autor: xp3

21:10:55 14.05.2005

To máš jedno, udělám to stejně, vždycky se to hodí, už jsem chtěl mp3 encoder před časem, teď mám příležitost :) Pak to sem pošlu.

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

18:36:06 14.05.2005

xp3: Já myslím, že bude možná lepší použít gogo.dll, funguje to a má to jen 70kB.
Jen ještě doladím tu stabilitu a bude to OK.
Zbytečně se s tím nemusíš dělat.

Citovat příspěvek

 

Re: File not found

Autor: xp3

18:25:40 14.05.2005

Pro lame dll žádnej příklad neni. Musíš si chcačky nechcačky stáhnout zdroják, v něm je hlavička k dll a z ní to všechno vypsat a přepsat do VB. Já to teda možná udělám, ale momentálně nemám čas, nejdřív tak za tejden. A to neni jistý, že to ve VB poběží.

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

18:12:16 14.05.2005

Tak jsem našel gogo.dll i s funkčním příkladem ve VB!!!
Je to sice ukázka na nahrávání do Mp3 ze zvukové karty, ale dá se to předělat na převod Wav to Mp3 (musí se tam použít novější gogo.dll).
http://www.vbcode.com/code/WavMp3Rec04152003.zip

Ve VB to vše funguje bezchybně. Pokud ale program zkompiluji do exe, tak to nejede. Asi po 2 sekundách nahrávání to spadne!
Myslím, že to nebude problém gogo.dll.
Co by s tím mohlo být - Ve VB6 vše jede, ale po kompilaci ne! ??

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

15:26:01 14.05.2005

Knihovnu mám, ale nikde jsem nenašel žádnej příklad pro VB..
Jinak lame.exe je super. Jen nevím, jak je to potom s licencí?

Citovat příspěvek

 

Re: File not found

Autor: xp3

15:04:20 14.05.2005

Ale lame existuje i jako dll knihovna, ne??? Nešly by deklarovat funkce přímo z ní?Tam už by se s tim určitě dalo dělat věcí. Já to teda nezkoušel, ale fungovat by to mohlo

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

12:47:33 14.05.2005

Měl jste pravdu. Opravdu to bylo tím Wav souborem. Ostatní mi fungují...
Jen ještě takový dotaz.. Nevíte, jak zjistit stav toho enkodovani?
Dokážu zjistit konec programu lame.exe, ale jak zjistit kolik procent ještě zbývá?

Opravdu díky, nebýt Vašeho příspěvku, už bych se na to asi vykašlal.

Citovat příspěvek

 

Re: File not found

Autor: Luboš

12:03:35 14.05.2005

Encoder jsem spustil pomocí funkce Shell.
iTask = Shell(App.Path & "\lame " & "zdroj.wav" & chr(32) & "cil.mp3", vbHide)

Zkuste přeložit i jinou wavku. Měl jsem doma jednu wavku která šla přehrát, ale MEncoder ani Lame ji nepřelouskali.

Citovat příspěvek

 

Re: File not found

Autor: Petr Tr.

10:12:19 14.05.2005

Taky jsem to zkoušel, ale bez výsledku.
Neháže mi to sice žádnou chybu, ale výsledný Mp3 soubor jen "chrčí"...
Zkoušel jsem soubor z adresy, kterou jste mi zde nechal.
Mohl byste mi zde napsat, jak jste testoval?
Moc by mi to pomohlo, děkuji.

Citovat příspěvek

 

Re: File not found

Autor: Luboš

7:40:21 14.05.2005

MEncoder jsem zkoušel už při vašem prvním dotazu. Možná něco dělám špatně, ale i u mně první převod proběhne bez problému a u druhého nastane kritická chyba. Je to nějaký problémový produkt. Na netu se hodně píše o Lame mp3 encoderu. Existuje jako exáč a jako knihovna. Ke knihovně jsem bohužel nenašel popis. Exáč se spouští pomocí příkazového řádku, a všechny převody wav>mp3 proběhly bezchybně. Nechcete jej vyzkoušet ?
http://www.softpedia.com/get/Multimedia/Audio/Audio-CD-Rippers-Encoders/LAME-MP3-Encoder.shtml

Citovat příspěvek

 

File not found

Autor: Petr Tr.

1:16:15 14.05.2005

Dobrý den, už delší dobu se trápím s tím, jak převést Wav do Mp3.
Naposled jsem zkoušel knihovnu MEncoder.dll, ale při zapnutí mi to napíše následující:

Run-time error '53':
File not found: MEncoder.dll

Knihovna se nachází ve stejné složce jako program...
Kde může být problém???

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: