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;