关于多媒体播放器VCD左右声道问题的BC代码
<P>关于多媒体播放器在CB下声道转换的原代码!(DEPHI版的网上有)</P><P>TSuperPlayerform *SuperPlayerform;
typedef struct
{
DWORD dwCallback;
DWORD dwItem;
DWORD dwValue;
DWORD dwOver;
LPSTR lpstrAlgorithm;
LPSTR lpstrQuality;
} MCI_DGV_SETAUDIO_PARMS;
const MCI_SETAUDIO = 0x873;
const MCI_SETVIDEO = 0x0876;
const MCI_DGV_SETAUDIO_SOURCE_LEFT=1;
const MCI_DGV_SETAUDIO_SOURCE_STEREO=0;
const MCI_DGV_SETAUDIO_SOURCE_RIGHT=2;
const MCI_DGV_SETAUDIO_SOURCE=0x4004;
const MCI_DGV_SETAUDIO_VOLUME=0x4002;
const MAX_VOLUME=65535;
const MIN_VOLUME=0;</P>
<P>void __fastcall TSuperPlayerform::LRC(char &S)
{
//char str;
MCI_DGV_SETAUDIO_PARMS s;
int err;
char buf;
//str=''L'';
if (MediaPlayer1->DeviceID>0)
{
err=mciSendCommand(MediaPlayer1->DeviceID,MCI_SETAUDIO,MCI_SET_OFF,int(&s));
if (err!=0)
mciGetErrorString(err,buf,sizeof(buf) );
if (S=='C')
s.dwValue=MCI_DGV_SETAUDIO_SOURCE_STEREO;
if (S=='L')
s.dwValue=MCI_DGV_SETAUDIO_SOURCE_LEFT;
if (S=='R') s.dwValue=MCI_DGV_SETAUDIO_SOURCE_RIGHT;
s.dwItem=MCI_DGV_SETAUDIO_SOURCE;
const MCI_DGV_SETAUDIO_VALUE=0x01000000L;
const MCI_DGV_SETAUDIO_ITEM=0x00800000L;
//(MCI_DGV_SETAUDIO_VALUE||MCI_DGV_SETAUDIO_ITEM)=0x01800000
err=mciSendCommand(MediaPlayer1->DeviceID,MCI_SETAUDIO,0x01800000,int(&s));
if (err!=0)
mciGetErrorString(err,buf,sizeof(buf) );
err=mciSendCommand(MediaPlayer1->DeviceID,MCI_SETAUDIO, MCI_SET_ON ,int(&s));
if (err!=0)
mciGetErrorString(err,buf,sizeof(buf) );
}
}</P>
<P> void __fastcall TSuperPlayerform::popnosoundClick(TObject *Sender)
{
LRC('L');
Label3->Caption=“左声道 ";
tempchannel='L';
}
//---------------------------------------------------------------------------</P>
<P> void __fastcall TSuperPlayerform::popsoundClick(TObject *Sender)
{
LRC('R');
Label3->Caption="右声道 ";
tempchannel='R';
}
//---------------------------------------------------------------------------</P>
<P> void __fastcall TSuperPlayerform::steroClick(TObject *Sender)
{
LRC('C');
Label3->Caption="立体声 ";
tempchannel='C';
}</P> <P>左右声道的设置代码!从网上找到的!</P><P>lReturn=mciSendString("set left off",sReturn,32,0)
lReturn=mciSendString("set right off",sReturn,32,0)
lReturn=mciSendString("setaudio left off",sReturn,32,0)
lReturn=mciSendString("setaudio right off",sReturn,32,0)
确切地说,以上四句关闭的并不是左右声道,而是左右音箱。由于通常的多媒体音频流多是立体声的,并不是左音箱播放的完全是左声道的音频流,其中掺入轻微的右声道声音,以达到更好的立体效果。
要想关闭左右声道可以这样:
lReturn=mciSendString("setaudio source to left",sReturn,32,0) '仅开左声道
lReturn=mciSendString("setaudio source to right",sReturn,32,0) '仅开右声道
lReturn=mciSendString("setaudio source to average",sReturn,32,0) '左右平均
lReturn=mciSendString("setaudio source to stereo",sReturn,32,0) '立体声,这是默认设置</P>
页:
[1]