ss
| RSS | RSS Forum | AboutUS |
Disarankan menggunakan browser selain Internet Explorer, resolusi minimal 1024x768
...
UserName:
PassWord:
     Lost?
Daftar jadi Anggota !
 


stress? deadline kelewat?
bos ngamuk? pc meledak?
masuk sini !


OpenID

(?)

e.g. myname.myhost.com


Main Menu
..:: onWebTools ::..
..:: onLastPosts ::..
LAST FORUM POSTS
goto PostKeyexist...(1)
 by ImanD
 on 20. Nov at 16:46
goto PostPindah Data Checklistbox ke Edit////(1)
 by deLogic
 on 20. Nov at 16:13
goto PostLowongan PT AT Indonesia (Astra Otopart Group)(3)
 by madi
 on 20. Nov at 13:19
goto PostNew page (dalam penggabungan report)??(1)
 by madi
 on 20. Nov at 13:08
goto PostLowongan Programmer - Jogja(8)
 by wahyu_elrahma
 on 20. Nov at 11:15
goto Postvariabel yang dapat diakses keseluruhan program(3)
 by deLogic
 on 20. Nov at 10:04
goto PostIlmuKomputer.Com - mohon doa buat kesembuhan IKC yaa(8)
 by jimbot
 on 20. Nov at 00:31

[Access Forum]

Procedure   Membuat MP3 Compressor Sendiri ();

__
//-- Dikirim oleh: reev pada 24-10-2007, Dibaca 1775 kali
//-- Topik: Multimedia
Begin
Jangan percaya judul di atas.
Yang dibahas di sini sesungguhnya hanyalah membuat antarmuka GUI untuk software WAV/MP3 Encoder\Decoder - Lame.
Lame sudah lama negtop di dunia encoding & decoding suara antarformat MP3 & WAV. Namun yang akan saya ulas di bawah hanya pada fitur mengompres file MP3 hingga ukurannya menjadi lebih kecil. Yang selanjutnya, MP3 dengan ukuran kecil jauh lebih efisien digunakan pada handphone, PDA, MP3 player dan sejenisnya.
Kualitas MP3 tergantung pada beberapa hal, seperti bitrate, jumlah channel, dan beberapa hal lain yang spesifik dengan digital music.

Berapa jumlah channel - untuk selanjutnya akan saya sebut Mode, dan bitrate serta kawan-kawannya - nanti saya sebut Preset, akan menjadi pokok pembicaraan di bagian awal tulisan ini. Lame dipublikasikan dalam bentuk sebuah file EXE (Lame.exe) dan juga sebuah library (lame_enc.dll). Keduanya dapat didownload di http://lame.sourceforge.net/. DI tulisan ini hanya Lame.exe yang akan digunakan. Misalkan Anda mempunyai sebuah file MP3 dengan ukuran 4MB, yang terletak di c:\music\avril_lavigne.mp3, dan Anda ingin mengompressnya biar pas buat memori HP Anda (sebut saja Nokia N93, biar keren) yang memorinya cuma tersisa 500KB doang. Apa akal? Ada ide: coba saja download lame.exe dan ekstrak ke c:\lame, lalu jalankan command prompt dan ketik:C:\lame\lame.exe -m mono - preset cbr 8 "c:\music\avril_lavigne.mp3" "c:\music\avril_lavigne_compressed.mp3" Kemudian tekan Enter. tunggu sampai proses yang ada di monitor Anda selesai. Sekarang cek file c:\music\avril_lavigne_compressed.mp3, dan ternyata, ukurannya pas buat HP Anda! Kembali ke dua hal di atas, Mode & Preset, "-m mono" adalah Modenya sedang "- preset cbr 8" adalah Presetnya. Berikut penjelasannya, "-m mono" berarti MP3 hasil kompresi nantinya harus memiliki channel tunggal, alias Mono. Mode lainnya adalah Stereo, Joint Stereo dan Force. Preset, sebagaimana contoh di atas, dapat diartikan seperti ini: cbr artinya Constant BitRate dan angka 8 berarti MP3 hasil kompresi memiliki Bitrate 8Kbps. Lebih lanjut, jalankan lame.exe tanpa parameter untuk melihat opsi-opsi lainnya.Selanjutnya, kita membuat antarmuka GUI dengan Delphi untuk perintah di atas. Urutan pengerjaan kompresi MP3 yang akan kita buat kira-kira seperti ini:

Input File MP3 -> jalankan lame.exe dengan parameter yang sesuai -> Tunggu sampai selesai -> File MP3 terkompres didapat. Pertama, kita buat input MP3, berupa sebuah TEdit, TButton, dan TOpenFileDialog. Beri event OnClick pada TButton dan isi dengan kode berikut:
if openfiledialog.Execute then
edit1.Text :=openfiledialog.FileName;

Selanjutnya, tambahkan sebuah TButton lagi, dan isi event OnClicknya dengan kode berikut:

<tbody></tbody>
var
  s:String;
  x:String;
begin
  if not fileexists(edit1.Text ) then
  begin
  MessageBox(handle,’Source file is not found.’,'Error’,MB_ICONHAND);
  exit;
  end;
  if Lowercase(ExtractFileExt(edit1.Text))<>’.mp3'; then
  begin
  MessageBox(handle,’Source file is not an MP3 file.’,'Error’,MB_ICONHAND);
  exit;
  end;
  Params:=’"‘+Compressor +’" ‘;
  Params:=Params + ‘-m ‘+Lowercase(cbm.Items[cbm.itemindex]){[1]}+’ ‘; //mode
  s:=lowercase(cbq.Items[cbq.itemindex]);
  x:=";
  if s = ’standard’ then x:=’- preset cbr ';
  if s = ‘medium’ then x:=’- preset cbr 1';
  if s = ‘high’ then x:=’- preset cbr 32';
  if s = ‘highest’ then x:=’- preset cbr 44';
  params:=params+x+’"‘+edit1.Text +’" "‘+changeFileExt(edit1.Text,’_compressed.mp3')+’"‘;
  b.Enabled:=False;
  try
  RunDos(Params, nil);
  finally
  b.Enabled:=true;
  end;
  MessageBox(handle,’Completed.’,'Information’,MB_ICONINFORMATION or MB_OK);
End;
Syntax Highlighted with http://delphi-id.org/syntax




Terakhir, buat sebuah unit lagi dan berikut isinya. Jangan lupa tambahkan unit ini ke klausa uses pada form yang mengandung kode di atas.

<tbody></tbody>
unit ucons;
 interface
 uses Windows, SysUtils, Forms;
 type
 TConsoleProgress = procedure (const Buffer:PChar); procedure RunDos(DosApp:String; consoleProgress:TconsoleProgress) ;   

implementation
procedure RunDos(DosApp:String; consoleProgress:TconsoleProgress) ; const   ReadBuffer = 2400;
var  
Security : TSecurityAttributes;  
ReadPipe,WritePipe : THandle;  
start : TStartUpInfo;  
ProcessInfo : TProcessInformation;  
Buffer : Pchar;  
BytesRead : DWord;   
Apprunning : DWord; 
begin   
With 
Security do
begin       
nlength := SizeOf(TSecurityAttributes) ;  
binherithandle := true;     
lpsecuritydescriptor := nil;   
end;
if Createpipe (ReadPipe, WritePipe, @Security, 0) then
begin       
Buffer := AllocMem(ReadBuffer + 1) ;    
FillChar(Start,Sizeof(Start),#0) ;
start.cb := SizeOf(start) ;     
start.hStdOutput := WritePipe;      
start.hStdInput := ReadPipe;    
start.dwFlags := STARTF_USESTDHANDLES +     STARTF_USESHOWWINDOW;       
start.wShowWindow := SW_HIDE;
if CreateProcess(nil,  PChar(DosApp),  @Security,  @Security,  true,  NORMAL_PRIORITY_CLASS,
        nil,  nil,  start,  ProcessInfo)    then        
begin           
repeat              
Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100) ;           Application.ProcessMessages;        
until (Apprunning <> WAIT_TIMEOUT) ;        
Repeat              
BytesRead := 0;             
ReadFile(ReadPipe,Buffer[0],   ReadBuffer,BytesRead,nil) ;
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer) ;
if @ConsoleProgress<>nil then                   consoleprogress(buffer);  
until (BytesRead < ReadBuffer) ;   
end;    
FreeMem(Buffer) ;       
CloseHandle(ProcessInfo.hProcess) ;     
CloseHandle(ProcessInfo.hThread) ;      
CloseHandle(ReadPipe) ;     
CloseHandle(WritePipe) ;   
end; 
end;
end.
Syntax Highlighted with http://delphi-id.org/syntax



Untuk lebih jelasnya, silahkan download demo project dan file exe hasil kompilasinya.
» Source Code
» Compiled EXE
Note: Rename *.ppt to *.zip top open downloaded files.

Selamat mencoba.JokoRB
End;

| Printer-friendly page |