回 帖 发 新 帖 刷新版面

主题:谁能帮我研究一下 mci_play.scx

附件是V9里面的范例,有帮助在里面。

不知道如何使用右声道、左声道 或 立体声道?

谢谢各位大虾?

回复列表 (共5个回复)

沙发

audio left off  关闭左声道的声音。
audio left on   启动左声道的声音。

板凳

audio right off 关闭右声道的声音。
audio right on  启动右声道的声音。

3 楼

请问当关闭左声道时,是否两个喇叭同时发出右声道的声音?反之反然?

4 楼

cbl518先生:

     可否将代码写在一按钮“click”上,顺序切换,左、右、立体声音3个,要求左右喇叭都要同时发声并平衡?

谢谢!

5 楼

audio left/right on/off 都未能试出,只试出关掉了所有。

这是网络找到的,VOD系统中的一段核心代码,不知道是什么语言干的?能否转为VFP?

Str值为:L/R/C 

const 
  MCI_SETAUDIO= $873; 
  MCI_SETVIDEO=$0876; 
  MCI_DGV_SETAUDIO_SOURCE_LEFT=1; 
  MCI_DGV_SETAUDIO_SOURCE_STEREO=0; 
  MCI_DGV_SETAUDIO_SOURCE_RIGHT=2; 
  MCI_DGV_SETAUDIO_SOURCE=$4004; 
  MCI_DGV_SETAUDIO_VALUE=$01000000; 
  MCI_DGV_SETAUDIO_ITEM=$00800000; 

  MCI_DGV_SETAUDIO_VOLUME=$4002;  
  MAX_VOLUME=65535;               
  MIN_VOLUME=0;        
     
procedure TFormMain.LRC(Str: String); 
var 
  s: MCI_DGV_SETAUDIO_PARMS ; 
  err:integer; 
  buf:array[0..1000] of char; 
begin 

  if MediaPlayer11.DeviceID>0 then 
  begin 
    err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO, MCI_SET_OFF ,integer(@s)); 
    if(err<>0)then 
    begin 
      mciGetErrorString(err,buf,sizeof(buf) ); 
      FormMain.MessageBoxShow('1',buf,2,True,10000); 
    end; 
    if Str='C' then 
      s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_STEREO;  
    if Str='L' then 
      s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_Left; 
    if Str='R' then 
      s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_Right; 
    s.dwItem:=MCI_DGV_SETAUDIO_SOURCE; 
    err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM ,integer(@s)); 
    if (err<>0) then 
    begin 
      mciGetErrorString(err,buf,sizeof(buf) ); 
      FormMain.MessageBoxShow('1',buf,2,True,10000); 
    end; 
    err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO, MCI_SET_ON ,integer(@s)); 
    if (err<>0) then 
    begin 
      mciGetErrorString(err,buf,sizeof(buf) ); 
      FormMain.MessageBoxShow('1',buf,2,True,10000); 
    end; 
  end; 
end; 

我来回复

您尚未登录,请登录后再回复。点此登录或注册