본문 바로가기
Delphi 예제 자료

[windows,android] 델파이 BASS 라이브러리 통한 간단한 오디오 커팅한 구간 파일 생성하기

by kimsyo11 2021. 12. 13.
728x90

본인 소스 일부에서 꺼냈으니 도움 되시길 바랍니다.

mp3 Tag Hex 바이너리 넣고싶다면 간단하게 ID3Tag 라이브러리 이용하시면 저장됩니다

저는 오디오 커팅해서 생성한 파일을

원본 파일 바이너리 Hex값이 mp3인지 flac파일인지 구별하여 mp3파일 경우

ID3Tag를 생성한 파일에 입혀 앨범사진과 타이틀 및 아티스트만 넣어놨습니다.

 

uses bass;

procedure TForm1.AudioCutting(TmpDir, StartTime, EndTime : string); 
var Chan : HSTREAM; //TmpDir 파일경로; StartTime := 00:01:10.480 EndTime := 00:01:20.480; 
    Time : int64;
begin
  Chan := BASS_StreamCreateFile(False, PChar(TmpDir), 0, 0,BASS_UNICODE or BASS_STREAM_DECODE);
 
  Time := Trunc((StrToDateTime(StartTime)*86400)); 
  BASS_ChannelSetPosition(Chan, BASS_ChannelSeconds2Bytes(Chan, Time), BASS_POS_BYTE);
  var StartPosition := BASS_StreamGetFilePosition(Chan, BASS_FILEPOS_START) + BASS_StreamGetFilePosition(Chan, BASS_FILEPOS_CURRENT);

  Time := Trunc((StrToDateTime(EndTime)*86400)); 
  BASS_ChannelSetPosition(Chan,BASS_ChannelSeconds2Bytes(Chan, Time), BASS_POS_BYTE);
  var EndPosition := BASS_StreamGetFilePosition(Chan, BASS_FILEPOS_START) + BASS_StreamGetFilePosition(Chan, BASS_FILEPOS_CURRENT);
  BASS_StreamFree(Chan);

  var FileStream := TBufferedFileStream.Create(TmpDir,fmShareDenyNone); //TmpDir mp3 파일 경로
  var FileSplitFile := TBufferedFileStream.Create(ExtractFileName(TmpDir) + '(HighLight)' + ExtractFileExt(TmpDir),fmCreate);
  FileStream.Position := StartPosition;
  var Max := EndPosition - StartPosition;
  FileSplitFile.CopyFrom(FileStream,Max);

  FileStream.Free;
  FileSplitFile.Free;
end;
728x90

댓글