Einzelnen Beitrag anzeigen

rolandED

Registriert seit: 1. Jun 2014
5 Beiträge
 
#1

WAV in MP3 konvertieren auf OSX

  Alt 10. Jun 2014, 20:02
versuche mit Delphi XE6 eine Anwendung für OSX zu schreiben die WAVs in MP3 konvertieren soll. Dafür wird BASS und das LAME Framework benutzt.
Das ProgressBar zeigt aktivität, es kommen auch keine Fehlermeldung aber es wird kein MP3 erzeugt.
Vielleicht hat jemand eine Idee was ich falsch gemacht habe.
Code:
       LameString := '/Library/Frameworks/LAME.framework/LAME -b 128 --bitwidth 24 -q 2 - /Users/User/Downloads/song.mp3';

        MP3Channel := BASS_StreamCreateFile(false, pchar(/Users/User/Downloads/song.wav'), 0, 0, BASS_SAMPLE_FLOAT or BASS_STREAM_DECODE or BASS_UNICODE);
        if MP3Channel = 0
           then ShowMessage('Error BASS_StreamCreateFile for MP3:' + GetBassError)
           else begin
           if BASS_Encode_Start(MP3Channel, pchar(LameString), BASS_ENCODE_FP_24BIT or BASS_UNICODE, nil, nil) = 0
              then ShowMessage('Error BASS_Encode_Start:' + GetBassError + #13 + LameString)
              else begin
              BytesRead := 4 * 102400;
              ProgressBar.Value := 0;
              while BASS_ChannelIsActive(MP3Channel) = BASS_ACTIVE_PLAYING
                    do begin
                    BytesCnt := BASS_ChannelGetData(MP3Channel, @DataFloatBuffer[0], BytesRead);
                    if BytesCnt = DW_ERROR
                       then ShowMessage('Error BASS_ChannelGetData:' + GetBassError);

                    MP3BytePosition := BASS_ChannelGetPosition(MP3Channel, BASS_POS_Byte);
                    if MP3BytePosition = QW_ERROR
                       then begin
                       MP3TimePosition := 0;
                       ShowMessage('Error BASS_ChannelGetPosition:' + GetBassError);
                       end else MP3TimePosition := trunc(1000 * BASS_ChannelBytes2Seconds(MP3Channel, MP3BytePosition));
                    ProgressBar.Value := MP3TimePosition;
                    Application.ProcessMessages;
                    end;

              if not BASS_Encode_Stop(MP3Channel)                          
                 then ShowMessage('Error BASS_Encode_Stop:' + GetBassError);

              Result := true;
              end;

           BASS_StreamFree(MP3Channel);
           end;
  Mit Zitat antworten Zitat