kmusttywyc 发表于 2004-9-30 19:11

关于多媒体播放器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 &amp;S)
{
  //char str;
  MCI_DGV_SETAUDIO_PARMS s;
  int err;
  char buf;
  //str=''L'';
  if (MediaPlayer1-&gt;DeviceID&gt;0)
  {
    err=mciSendCommand(MediaPlayer1-&gt;DeviceID,MCI_SETAUDIO,MCI_SET_OFF,int(&amp;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-&gt;DeviceID,MCI_SETAUDIO,0x01800000,int(&amp;s));
    if (err!=0)
       mciGetErrorString(err,buf,sizeof(buf) );
    err=mciSendCommand(MediaPlayer1-&gt;DeviceID,MCI_SETAUDIO, MCI_SET_ON ,int(&amp;s));
    if (err!=0)
      mciGetErrorString(err,buf,sizeof(buf) );
   }
}</P>
<P> void __fastcall TSuperPlayerform::popnosoundClick(TObject *Sender)
{
     LRC('L');
     Label3-&gt;Caption=“左声道 ";
     tempchannel='L';
}
//---------------------------------------------------------------------------</P>
<P> void __fastcall TSuperPlayerform::popsoundClick(TObject *Sender)
{
     LRC('R');
     Label3-&gt;Caption="右声道 ";
     tempchannel='R';
}
//---------------------------------------------------------------------------</P>
<P> void __fastcall TSuperPlayerform::steroClick(TObject *Sender)
{
     LRC('C');
     Label3-&gt;Caption="立体声 ";
     tempchannel='C';
}</P>

ilikenba 发表于 2004-9-30 20:30

<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]
查看完整版本: 关于多媒体播放器VCD左右声道问题的BC代码