![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как экстрагировать аудиодорожку из AVI файлаDelphi , Мультимедиа , ВидеоАвтор: http://www.swissdelphicenter.ch uses {...}, vfw; var abort: Boolean; {$R *.DFM} {Vielen Dank an Jailbird, der einen groЯen Teil dieses Codes entwickelt hat Special thanks to Jailbird, who developed a big part of this Code} {Bitte zuerst die vfw.pas downloaden Please download th vfw.pas first } {Die 'SaveCallback' Funktion erlaubt es dem Benutzer den aktuellen Prozess Status zu erfahren und den Speichervorgang vorzeitig abzubrechen. Diese Funktion muss NICHT vom Benutzer aufgerufen werden. The 'SaveCallback' function allows the user to get the process status and abort the save progress. This function needn't to call by the user.} function SaveCallback(nPercent: Int): Bool; pascal; begin Application.ProcessMessages; Form1.Progressbar1.Position := nPercent; //Speicher Status in Prozent //Save Status in Percent if abort = True then Result := True //Wenn die Funktion "True" zurьckgibt, wird der Speichervorgang fortgesetzt. else //If then function returns "True", the Process will continue Result := False; //Gibt sie "False" zurьck wird der Vorgang abgebrochen end; //If it returns "False" the process will abort {Die folgende Funktion erwartet zwei Parameter: Inputfile: PChar Geben Sie hier die die AVI Datei an aus welche Sie die Audiospur extrahieren mцchten. Outputfile: PChar Geben Sie einen Pfad + Dateinamen einer WAVE Datei an. In diese Datei wird die AudioSpur gespeichert. HINWEIS: Geben Sie nur eine WAVE Datei als Ausgabedatei an wenn die Audiodaten in der AVI Datei unkomprimiert (als PCM WAVE) vorliegen. #################################################### The following function needs two parameters: InputFile: PChar Enter a Dir + Filename of a AVI File. OutputFile: PChar Enter a Dir + Filename of a WAVE File where do you want to put the audiodata of the movie. TIP: Enter jus a Filename of a WAVE File if the audiodata of the movie is in uncompressed PCM Format. ########################################################### WICHTIG: Stellen Sie vor dem aufrufen der Funktion 'ExtractAVISound' sicher das die Eingabedatei (Inputfile) ьber eine AudioSpur verfьgt. IMPORTANT: Before calling the 'ExtractAVISound' function be sure that the Inputfile has a audiotrace. } function TForm1.ExtractAVISound(InputFile, Outputfile: PChar): Boolean; var PFile: IAviFile; PAvi: IAviStream; plpOptions: PAviCompressOptions; begin Abort := False; if Fileexists(StrPas(Outputfile)) then begin case MessageDlg('Ausgabedatei existiert bereits. Ьberschreiben?', mtWarning, [mbYes, mbNo], 0) of mrYes: begin DeleteFile(StrPas(Outputfile)); //Wichtig, da die Funktion sonst nur so viel der end; //Datei ьberschreibt wie gebraucht wird. //Important because the function overwrite just //the part of the file which is needed. mrNo: begin Exit; end; end; end; try //Initialisiert die API AviFileInit; //Init the API if AviFileOpen(PFile, Inputfile, 0, nil) <> 0 then //Цffnet eine AVI Datei begin //Opens a AVI File MessageDlg('Fehler beim laden des Videos. Mцglicherweise wird die Datei von einem anderen Prozess verwendet.' + #13#10+ 'SchlieЯen Sie alle in Frage kommenden Anwendungen und versuchen Sie es erneut.', mtError, [mbOK], 0); Result := False; Exit; end; if AviFileGetStream(PFile, PAvi, StreamTypeAudio, 0) <> 0 then begin MessageDlg( 'Fehler beim laden des AudioStreams. Bitte ьberprьfen Sie, ob dieses Video ьber einen AudioStream verfьgt.', mtError, [mbOK], 0); AviFileExit; Result := False; Exit; end; //Speichert den AudioStream //Saves the AudioStream if AviSaveV(Outputfile, nil, @SaveCallback, 1, PAvi, plpOptions) <> 0 then begin MessageDlg('Fehler beim Speichern des AudioStreams oder Sie haben den Speichervorgang abgebrochen.', mtError, [mbOK], 0); AviStreamRelease(PAvi); AviFileExit; Result := False; Exit; end; finally AviStreamRelease(PAvi); AviFileExit; end; Result := True; //'TRUE' zurьckgeben wenn alles geklappt hat //return 'TRUE' if all right end; //Beispiel zu aufrufen der Funktion: //Example how to call the function: procedure TForm1.Button1Click(Sender: TObject); begin if ExtractAVISound(PChar('D:\test.avi'), PChar('D:\test.wav')) = True then ShowMessage('Audiospur erfolgreich gespeichert!'); // Audio sucessfully saved else ShowMessage('Fehler beim Speichern der Audiospur.'); // Error while saving... end; Программа на Delphi, которая извлекает аудиострим из файла AVI и сохраняет его в файл WAV. Вот шаг за шагом, как она работает:
Функция Чтобы использовать это код, вы создаете форму с кнопкой и прикрепляете обработчик события Вот некоторые потенциальные проблемы с этим кодом:
Чтобы улучшить этот код, вы могли бы рассмотреть использование механизмов обработки ошибок, таких как блока Содержание статьи описывает, как извлечь аудиодорожку из файла AVI с помощью программирования на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |