Mega Code Archive

 
Categories / Delphi / Files
 

Extract the audio stream from an AVI file

Title: extract the audio stream from an AVI file? uses {...},vfw; var abort:Boolean; {$R*.DFM} {VielenDankanJailbird,dereinengroenTeildiesesCodesentwickelthat SpecialthankstoJailbird,whodevelopedabigpartofthisCode} {Bittezuerstdievfw.pasdownloaden Pleasedownloadthvfw.pasfirst} {Die'SaveCallback'FunktionerlaubtesdemBenutzerden aktuellenProzessStatuszuerfahrenunddenSpeichervorgang vorzeitigabzubrechen.DieseFunktionmussNICHTvomBenutzer aufgerufenwerden. The'SaveCallback'functionallowstheusertogetthe processstatusandabortthesaveprogress.Thisfunction needn'ttocallbytheuser.} functionSaveCallback(nPercent:Int):Bool;pascal; begin Application.ProcessMessages; Form1.Progressbar1.Position:=nPercent;//SpeicherStatusinProzent //SaveStatusinPercent ifabort=Truethen Result:=True//WenndieFunktion"True"zurckgibt,wirdderSpeichervorgangfortgesetzt. else//Ifthenfunctionreturns"True",theProcesswillcontinue Result:=False;//Gibtsie"False"zurckwirdderVorgangabgebrochen end;//Ifitreturns"False"theprocesswillabort {DiefolgendeFunktionerwartetzweiParameter: Inputfile:PChar GebenSiehierdiedieAVIDateianauswelcheSie dieAudiospurextrahierenmchten. Outputfile:PChar GebenSieeinenPfad+DateinameneinerWAVEDateian. IndieseDateiwirddieAudioSpurgespeichert. HINWEIS: GebenSienureineWAVEDateialsAusgabedateianwenn dieAudiodateninderAVIDateiunkomprimiert(alsPCMWAVE) vorliegen. #################################################### Thefollowingfunctionneedstwoparameters: InputFile:PChar EnteraDir+FilenameofaAVIFile. OutputFile:PChar EnteraDir+FilenameofaWAVEFilewheredoyouwantto puttheaudiodataofthemovie. TIP: EnterjusaFilenameofaWAVEFileiftheaudiodataofthe movieisinuncompressedPCMFormat. ########################################################### WICHTIG: StellenSievordemaufrufenderFunktion'ExtractAVISound'sicher dasdieEingabedatei(Inputfile)bereineAudioSpurverfgt. IMPORTANT: Beforecallingthe'ExtractAVISound'functionbesurethatthe Inputfilehasaaudiotrace. } functionTForm1.ExtractAVISound(InputFile,Outputfile:PChar):Boolean; var PFile:IAviFile; PAvi:IAviStream; plpOptions:PAviCompressOptions; begin Abort:=False; ifFileexists(StrPas(Outputfile))then begin caseMessageDlg('Ausgabedateiexistiertbereits.berschreiben?', mtWarning,[mbYes,mbNo],0)of mrYes: begin DeleteFile(StrPas(Outputfile));//Wichtig,dadieFunktionsonstnursovielder end;//Dateiberschreibtwiegebrauchtwird. //Importantbecausethefunctionoverwritejust //thepartofthefilewhichisneeded. mrNo: begin Exit; end; end; end; try//InitialisiertdieAPI AviFileInit;//InittheAPI ifAviFileOpen(PFile,Inputfile,0,nil)0then//ffneteineAVIDatei begin//OpensaAVIFile MessageDlg('FehlerbeimladendesVideos. MglicherweisewirddieDateivoneinemanderenProzessverwendet.' +#13#10+ 'SchlieenSiealleinFragekommendenAnwendungenundversuchenSieeserneut.', mtError,[mbOK],0); Result:=False; Exit; end; ifAviFileGetStream(PFile,PAvi,StreamTypeAudio,0)0then begin MessageDlg( 'FehlerbeimladendesAudioStreams.BitteberprfenSie,obdiesesVideobereinenAudioStreamverfgt.', mtError,[mbOK],0); AviFileExit; Result:=False; Exit; end; //SpeichertdenAudioStream //SavestheAudioStream ifAviSaveV(Outputfile,nil,@SaveCallback,1,PAvi,plpOptions)0then begin MessageDlg('FehlerbeimSpeicherndesAudioStreamsoderSiehabendenSpeichervorgangabgebrochen.', mtError,[mbOK],0); AviStreamRelease(PAvi); AviFileExit; Result:=False; Exit; end; finally AviStreamRelease(PAvi); AviFileExit; end; Result:=True;//'TRUE'zurckgebenwennallesgeklappthat //return'TRUE'ifallright end; //BeispielzuaufrufenderFunktion: //Examplehowtocallthefunction: procedureTForm1.Button1Click(Sender:TObject); begin ifExtractAVISound(PChar('D:\test.avi'),PChar('D:\test.wav'))=Truethen ShowMessage('Audiospurerfolgreichgespeichert!');//Audiosucessfullysaved else ShowMessage('FehlerbeimSpeichernderAudiospur.');//Errorwhilesaving... end;