Dziwne pstryknięcie przy odtwarzaniu dźwięku w windows 8.

0

Mam taki kod:

with MediaPlayer1 do
begin
   FileName := 'C:\kotek.mp3';
   Open; 
   Play;  
end;

Przy odtwarzaniu dźwięku w programie na początku jakiegokolwiek dźwięku mp3 słyszę jakieś pstryknięcie. Gdy otworzę program w windows xp, tego pstryknięcia nie ma. Co zrobić?

0

Przeinstalowac win8 -> xp ;p

A to pykniecie pojawia sie tez przy innym formacie dzwieku? jakis wav albo mid?

0

zapewne zależy od sterowników karty muzycznej
nie tylko w komputerach ale też słyszalne jest to w komórkach - głośnik jest całkowicie odcinany od sygnału gdy nie leci żaden dźwięk celem zaoszczędzenia prądu jak mniemam i żeby nie słychać było szumu - przy załączaniu głośnika gdy się wsłucha słychać szum w tle jeszcze przez jakąś sekundę po puszczeniu dźwięku i niestety przy załączaniu często można usłyszeć mniejszy lub większy "trzask"
Nie wiem jak to rozwiązać - jeżeli to przeszkadza to spróbowałbym na sekundę przed dźwiękiem puścić jakiś bardzo cichy szum żeby załączyć głośnik

No chyba że tylko w Twoim programie się tak dzieje - wtedy po prostu zmień bibliotekę do odtwarzania z której korzystasz

0

w wav nie ma pstryknięcia, ale windows xp mam na wirtualu to co sterowniki mają mieć do tego?

1

@nowyuser - zostaw w spokoju MediaPlayera i zainteresuj się jakąś biblioteką, np. BASS, a w razie czego pytaj o konkrety; Z tego co pamiętam to @olesio używał wspomnianej biblioteki, więc powinien być w stanie pomóc - ewentualnie posiłkuj się Google;

Ja niestety nie używałem i zbytnio nie mam czasu na uczenie się jej obsługi.

1

Jeżeli mp3ka pod GoldWave albo w jakimś innym edytorze na początku wykresu fali dźwiękowej nie ma nic i tego nie słychać. To raczej mp3 jest prawidłowo zgrana bez kliknięć, ktôre mogły być przyczyną zgrywania z przeskakującego nośnika w napędzie CD i tym podobne. Najlepiej spróbować odtworzyć to pod BASSem dla pewności. Nie powinno z tym być najmniejszego problemu. W zipie z dllką jest dokumentacja oraz mnóstwo przykładów. Również w Delphi.

0

pobrałem te programy źródłowe z użyciem BASS, działa mp3 tak jak powinno.
Jeżeli chodzi o przekształcenie tych programów żeby kod był równoważny z tym co podałem w pierwszym poście to chyba będzie to wyglądało jak poniżej, u mnie działa poprawnie:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,BASS, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure Error(msg: string);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Error(msg: string);
begin
	MessageBox(Handle, PChar(msg + #13#10 + '(Error code: ' + IntToStr(BASS_ErrorGetCode) + ')'), 'Error', MB_ICONERROR or MB_OK);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not BASS_ChannelPlay((BASS_StreamCreateFile(False, PChar('C:\kotek.mp3'), 0, 0, 0)), False) then
  Error('Error playing stream!');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
	if BASS_GetVersion() <> DWORD(MAKELONG(2,1)) then begin
		Error('BASS version 2.1 was not loaded!');
		Halt;
	end;

	if not BASS_Init(1, 44100, 0, Handle, nil) then
		Error('Error initializing audio!');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  BASS_StreamFree(BASS_StreamCreateFile(False, PChar('C:\kotek.mp3'), 0, 0, 0));
	BASS_Free();
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1