Конференция "Media" » помогите разрезать мп3 файл [D7, WinXP]
 
  • Мп3 (25.04.08 20:42) [0]
    Здравствуйте уважаемые мастера. Недавно столкнулся с такой проблемой. Решил разрезать мп3 файл пользуясь

    библиотекой Bass.dll при этом изспользуя функцию BASS_ChannelGetPosition( Hendl ); - где-то слышал что она получает

    позицию проигрывания. Когда же разрезаю, то трек получается во первых длиннее, а во вторых функция вырезает не в

    указанном месте. Что я не так делаю? Помогите, может кто сталкивался с подобной проблемой.
     Вот мой код:

    var
     BegSplit, EndSplit : int64;

      *  *  *

    // Начальная позиция
    BegSplit:=BASS_ChannelGetPosition( Hendl );

    // Конечная позиция
    EndSplit:=BASS_ChannelGetPosition( Hendl );

      *  *  *

    Procedure Split(FileSource, FileSplit : String; BegPos, EndPos : int64);
    var
      LoadF, SaveF : File;
      Buf          : array[0..1024] of byte;
      NumRead, NumWritten    : integer;
    Begin
      Assign(LoadF, FileSource);
      Reset(LoadF, 1);
      form1.Label9.Caption:=inttostr( FileSize(LoadF) );

      Assign(SaveF, FileSplit);
      Rewrite(SaveF, 1);

      Seek(LoadF, BegPos);

      While not Eof(LoadF) do
      Begin
         BlockRead(LoadF, Buf, SizeOf(Buf), NumRead );
         BlockWrite(SaveF, Buf, SizeOf(Buf), NumWritten);

         if FilePos(LoadF)>=EndPos  then break;
         If NumRead<>NumWritten then break;
      End;

      Close(LoadF);
      Close(SaveF);
    End;

    procedure TForm1.Button9Click(Sender: TObject);
    begin
      Split(PChar(OpenDialog1.FileName),'c:\split.mp3', BegSplit, EndSplit);
    end;
 
Конференция "Media" » помогите разрезать мп3 файл [D7, WinXP]
Есть новые Нет новых   [133929   +472][b:0.001][p:0]