RM文件的声道切换问题?请进来看看! (200分)

3

3cs

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个朋友他压了一些realplayer格式的RM文件,要我帮他做一个播放器,要求象超解3000
一样不但能全屏播放它们,而且还要实现“原声”和“伴唱”的卡拉OK功能(我试了一下超解
能实现卡拉OK功能)。
 现在在“原声”和“伴唱”处“卡”住了!
 对RealPlay格式了解的朋友,能否帮帮我,讲一讲Real的声道方面的处理方法和原理,
给源码提示者,在下愿再加200分。

希望各位DFW帮帮小弟!
 
没人知道,还是没有作过呀!
 
我不知道,学习学习,帮你up。
 
我补充一下:我用的是RealAudio控件,超解3000已实现了这个功能,用RealAudio怎样
去实现。还望各位多多帮忙,谢谢了!
 
没人顶,我自己顶了!
 
帮你顶吧,没搞过这类东东
 
老兄,不要郁闷,看看这篇文章可有帮助
http://www.ccw.com.cn/htm/center/prog/02_4_9_5.asp
 
up有分,能说说原理及方法,或代码者另开贴给分(500)。给出“原/伴”代码正确者
RMB300.00,决不失言。
 
to:xp2000
好东西,谢谢你!
 
平时我看RM电影时,好象是不能切换左右声道的.

我感觉是不能分成左右声道的.
 
to:li_cj
平常的电影它在压制的时候,只压了一个声道,而我现在用的RM文件压的是二个声道
用超解可以分出“原声”和“伴唱”,但我却不行,郁闷!
 
用 DirectSound 吧,,
可以实现混音,,分别控制左右声道音量都可以。。

可以对象化,,,方便,他不管你前面来的什么音,
只要向硬件输出,,他就可以管。。
 
to darnis
谢谢你,我试试!
 
C:/WINDOWS/system32/rmoc3260.dll

RealAudioObjects;
// Real Player ActiveX Control Library

Dispatch IRealAudio;
// Real Player ActiveX Control
GUID={CFCDAA01-8BE4-11CF-B84B-0020AFBBCCFA};
function QueryInterface(riid:^GUID;
out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT;
lcid:UI4;
out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID;
rgszNames:^^I1;
cNames:UINT;
lcid:UI4;
out rgdispid:^I4);
function Invoke(dispidMember:I4;
riid:^GUID;
lcid:UI4;
wFlags:UI2;
pdispparams:^DISPPARAMS;
out pvarResult:^variant;
out pexcepinfo:^EXCEPINFO;
out puArgErr:^UINT);
property-get Source: BSTR;
property-put Source(BSTR);
property-get Console: BSTR;
property-put Console(BSTR);
property-get Controls: BSTR;
property-put Controls(BSTR);
property-get NoLabels: bool;
property-put NoLabels(bool);
property-get AutoStart: bool;
property-put AutoStart(bool);
property-get AutoGotoURL: bool;
property-put AutoGotoURL(bool);
property-get WindowName: BSTR;
property-put WindowName(BSTR);
function GetSource: BSTR;
function SetSource(lpszNewValue:BSTR);
function GetConsole: BSTR;
function SetConsole(lpszNewValue:BSTR);
function GetControls: BSTR;
function SetControls(lpszNewValue:BSTR);
function GetNoLabels: bool;
function SetNoLabels(bNewValue:bool);
function GetAutoStart: bool;
function SetAutoStart(bNewValue:bool);
function GetAutoGotoURL: bool;
function SetAutoGotoURL(bNewValue:bool);
function GetVolume: I2;
function SetVolume(nVol:I2);
function GetMute: bool;
function SetMute(bMute:bool);
function GetLoop: bool;
function SetLoop(bVal:bool);
function GetImageStatus: bool;
function SetImageStatus(bEnable:bool);
function GetPacketsTotal: I4;
function GetPacketsReceived: I4;
function GetPacketsOutOfOrder: I4;
function GetPacketsMissing: I4;
function GetPacketsEarly: I4;
function GetPacketsLate: I4;
function GetBandwidthAverage: I4;
function GetBandwidthCurrent: I4;
functiondo
PlayPause;
functiondo
Stop;
functiondo
NextItem;
functiondo
PrevItem;
function CanPlayPause: bool;
function CanStop: bool;
function HasNextItem: bool;
function HasPrevItem: bool;
function HasNextEntry: bool;
function HasPrevEntry: bool;
functiondo
NextEntry;
functiondo
PrevEntry;
function AboutBox;
function EditPreferences;
function HideShowStatistics;
function IsStatisticsVisible: bool;
functiondo
GotoURL(url:BSTR;
target:BSTR);
functiondo
Play;
functiondo
Pause;
function GetPosition: I4;
function GetPlayState: I4;
function GetLength: I4;
function GetTitle: BSTR;
function GetAuthor: BSTR;
function GetCopyright: BSTR;
function GetClipWidth: I4;
function GetClipHeight: I4;
function CanPlay: bool;
function CanPause: bool;
function SetPosition(lPosition:I4);
function GetNumLoop: I4;
function SetNumLoop(lVal:I4);
function GetCenter: bool;
function SetCenter(bVal:bool);
function GetNoLogo: bool;
function SetNoLogo(bVal:bool);
function GetMaintainAspect: bool;
function SetMaintainAspect(bVal:bool);
function GetBackgroundColor: BSTR;
function SetBackgroundColor(pVal:BSTR);
function GetStereoState: bool;
function GetLiveState: bool;
function GetShowStatistics: bool;
function SetShowStatistics(bVal:bool);
function GetShowPreferences: bool;
function SetShowPreferences(bVal:bool);
function GetShowAbout: bool;
function SetShowAbout(bVal:bool);
function GetOriginalSize: bool;
function SetOriginalSize;
function GetDoubleSize: bool;
function SetDoubleSize;
function GetFullScreen: bool;
function SetFullScreen;
function GetEnableContextMenu: bool;
function SetEnableContextMenu(bVal:bool);
function GetEnableOriginalSize: bool;
function SetEnableOriginalSize(bVal:bool);
function GetEnableDoubleSize: bool;
function SetEnableDoubleSize(bVal:bool);
function GetEnableFullScreen: bool;
function SetEnableFullScreen(bVal:bool);
function GetEnableMessageBox: bool;
function SetEnableMessageBox(bVal:bool);
function SetTitle(pVal:BSTR);
function SetAuthor(pVal:BSTR);
function SetCopyright(pVal:BSTR);
function GetWantKeyboardEvents: bool;
function SetWantKeyboardEvents(bWantsEvents:bool);
function GetWantMouseEvents: bool;
function SetWantMouseEvents(bWantsEvents:bool);
function GetNumEntries: I2;
function GetCurrentEntry: I2;
function GetEntryTitle(uEntryIndex:I2): BSTR;
function GetEntryAuthor(uEntryIndex:I2): BSTR;
function GetEntryCopyright(uEntryIndex:I2): BSTR;
function GetEntryAbstract(uEntryIndex:I2): BSTR;
function SetCanSeek(bCanSeek:bool);
function GetCanSeek: bool;
function GetBufferingTimeElapsed: I4;
function GetBufferingTimeRemaining: I4;
function GetConnectionBandwidth: I4;
function GetPreferedLanguageString: BSTR;
function GetPreferedLanguageID: I4;
function GetUserCountryID: I4;
function GetNumSources: I2;
function GetSourceTransport(nSourceNum:I2): BSTR;
function GetWantErrors: bool;
function SetWantErrors(bVal:bool);
function GetShuffle: bool;
function SetShuffle(bVal:bool);
function GetVersionInfo: BSTR;
function GetLastMessage: BSTR;
function GetLastErrorSeverity: I4;
function GetLastErrorRMACode: I4;
function GetLastErrorUserCode: I4;
function GetLastErrorUserString: BSTR;
function GetLastErrorMoreInfoURL: BSTR;
function SetPreFetch(bVal:bool);
function GetPreFetch: bool;
function SetRegion(pVal:BSTR);
function GetRegion: BSTR;
function GetIsPlus: bool;
function GetConsoleEvents: bool;
function SetConsoleEvents(bVal:bool);

Dispatch DRealAudioEvents;
// Event interface for RealAudio control
GUID={CFCDAA02-8BE4-11CF-B84B-0020AFBBCCFA};
function OnGotoURL(url:BSTR;
target:BSTR);
function OnClipOpened(shortClipName:BSTR;
url:BSTR);
function OnClipClosed;
function OnShowStatus(statusText:BSTR);
function OnPositionChange(lPos:I4;
lLen:I4);
function OnVolumeChange(nVol:I2);
function OnMuteChange(bMute:I4);
function OnTitleChange(bstrTitle:BSTR);
function OnAuthorChange(bstrAuthor:BSTR);
function OnCopyrightChange(bstrCopyright:BSTR);
function OnPlayStateChange(lNewState:I4);
function OnErrorMessage(uSeverity:I2;
uRMACode:I4;
uUserCode:I4;
pUserString:BSTR;
pMoreInfoURL:BSTR;
pErrorString:BSTR);
function OnStatsInfoChange(bstrStats:BSTR);
function OnContacting(bstrContacting:BSTR);
function OnPreSeek(lOldTime:I4;
lNewTime:I4);
function OnPostSeek(lOldTime:I4;
lNewTime:I4);
function OnPresentationOpened;
function OnPresentationClosed;
function OnPreFetchComplete;
function OnLButtonDown(nFlags:INT;
nX:INT;
nY:INT);
function OnLButtonUp(nFlags:INT;
nX:INT;
nY:INT);
function OnRButtonDown(nFlags:INT;
nX:INT;
nY:INT);
function OnRButtonUp(nFlags:INT;
nX:INT;
nY:INT);
function OnMouseMove(nFlags:INT;
nX:INT;
nY:INT);
function OnKeyDown(nFlags:INT;
nKey:INT);
function OnKeyUp(nFlags:INT;
nKey:INT);
function OnKeyPress(nFlags:INT;
nKey:INT);
function OnBuffering(lFlags:I4;
lPercentage:I4);
function OnStateChange(lOldState:I4;
lNewState:I4);

Class RealAudio;
// RealAudio control
GUID={CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA};
function QueryInterface(riid:^GUID;
out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT;
lcid:UI4;
out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID;
rgszNames:^^I1;
cNames:UINT;
lcid:UI4;
out rgdispid:^I4);
function Invoke(dispidMember:I4;
riid:^GUID;
lcid:UI4;
wFlags:UI2;
pdispparams:^DISPPARAMS;
out pvarResult:^variant;
out pexcepinfo:^EXCEPINFO;
out puArgErr:^UINT);
property-get Source: BSTR;
property-put Source(BSTR);
property-get Console: BSTR;
property-put Console(BSTR);
property-get Controls: BSTR;
property-put Controls(BSTR);
property-get NoLabels: bool;
property-put NoLabels(bool);
property-get AutoStart: bool;
property-put AutoStart(bool);
property-get AutoGotoURL: bool;
property-put AutoGotoURL(bool);
property-get WindowName: BSTR;
property-put WindowName(BSTR);
function GetSource: BSTR;
function SetSource(lpszNewValue:BSTR);
function GetConsole: BSTR;
function SetConsole(lpszNewValue:BSTR);
function GetControls: BSTR;
function SetControls(lpszNewValue:BSTR);
function GetNoLabels: bool;
function SetNoLabels(bNewValue:bool);
function GetAutoStart: bool;
function SetAutoStart(bNewValue:bool);
function GetAutoGotoURL: bool;
function SetAutoGotoURL(bNewValue:bool);
function GetVolume: I2;
function SetVolume(nVol:I2);
function GetMute: bool;
function SetMute(bMute:bool);
function GetLoop: bool;
function SetLoop(bVal:bool);
function GetImageStatus: bool;
function SetImageStatus(bEnable:bool);
function GetPacketsTotal: I4;
function GetPacketsReceived: I4;
function GetPacketsOutOfOrder: I4;
function GetPacketsMissing: I4;
function GetPacketsEarly: I4;
function GetPacketsLate: I4;
function GetBandwidthAverage: I4;
function GetBandwidthCurrent: I4;
functiondo
PlayPause;
functiondo
Stop;
functiondo
NextItem;
functiondo
PrevItem;
function CanPlayPause: bool;
function CanStop: bool;
function HasNextItem: bool;
function HasPrevItem: bool;
function HasNextEntry: bool;
function HasPrevEntry: bool;
functiondo
NextEntry;
functiondo
PrevEntry;
function AboutBox;
function EditPreferences;
function HideShowStatistics;
function IsStatisticsVisible: bool;
functiondo
GotoURL(url:BSTR;
target:BSTR);
functiondo
Play;
functiondo
Pause;
function GetPosition: I4;
function GetPlayState: I4;
function GetLength: I4;
function GetTitle: BSTR;
function GetAuthor: BSTR;
function GetCopyright: BSTR;
function GetClipWidth: I4;
function GetClipHeight: I4;
function CanPlay: bool;
function CanPause: bool;
function SetPosition(lPosition:I4);
function GetNumLoop: I4;
function SetNumLoop(lVal:I4);
function GetCenter: bool;
function SetCenter(bVal:bool);
function GetNoLogo: bool;
function SetNoLogo(bVal:bool);
function GetMaintainAspect: bool;
function SetMaintainAspect(bVal:bool);
function GetBackgroundColor: BSTR;
function SetBackgroundColor(pVal:BSTR);
function GetStereoState: bool;
function GetLiveState: bool;
function GetShowStatistics: bool;
function SetShowStatistics(bVal:bool);
function GetShowPreferences: bool;
function SetShowPreferences(bVal:bool);
function GetShowAbout: bool;
function SetShowAbout(bVal:bool);
function GetOriginalSize: bool;
function SetOriginalSize;
function GetDoubleSize: bool;
function SetDoubleSize;
function GetFullScreen: bool;
function SetFullScreen;
function GetEnableContextMenu: bool;
function SetEnableContextMenu(bVal:bool);
function GetEnableOriginalSize: bool;
function SetEnableOriginalSize(bVal:bool);
function GetEnableDoubleSize: bool;
function SetEnableDoubleSize(bVal:bool);
function GetEnableFullScreen: bool;
function SetEnableFullScreen(bVal:bool);
function GetEnableMessageBox: bool;
function SetEnableMessageBox(bVal:bool);
function SetTitle(pVal:BSTR);
function SetAuthor(pVal:BSTR);
function SetCopyright(pVal:BSTR);
function GetWantKeyboardEvents: bool;
function SetWantKeyboardEvents(bWantsEvents:bool);
function GetWantMouseEvents: bool;
function SetWantMouseEvents(bWantsEvents:bool);
function GetNumEntries: I2;
function GetCurrentEntry: I2;
function GetEntryTitle(uEntryIndex:I2): BSTR;
function GetEntryAuthor(uEntryIndex:I2): BSTR;
function GetEntryCopyright(uEntryIndex:I2): BSTR;
function GetEntryAbstract(uEntryIndex:I2): BSTR;
function SetCanSeek(bCanSeek:bool);
function GetCanSeek: bool;
function GetBufferingTimeElapsed: I4;
function GetBufferingTimeRemaining: I4;
function GetConnectionBandwidth: I4;
function GetPreferedLanguageString: BSTR;
function GetPreferedLanguageID: I4;
function GetUserCountryID: I4;
function GetNumSources: I2;
function GetSourceTransport(nSourceNum:I2): BSTR;
function GetWantErrors: bool;
function SetWantErrors(bVal:bool);
function GetShuffle: bool;
function SetShuffle(bVal:bool);
function GetVersionInfo: BSTR;
function GetLastMessage: BSTR;
function GetLastErrorSeverity: I4;
function GetLastErrorRMACode: I4;
function GetLastErrorUserCode: I4;
function GetLastErrorUserString: BSTR;
function GetLastErrorMoreInfoURL: BSTR;
function SetPreFetch(bVal:bool);
function GetPreFetch: bool;
function SetRegion(pVal:BSTR);
function GetRegion: BSTR;
function GetIsPlus: bool;
function GetConsoleEvents: bool;
function SetConsoleEvents(bVal:bool);
function OnGotoURL(url:BSTR;
target:BSTR);
function OnClipOpened(shortClipName:BSTR;
url:BSTR);
function OnClipClosed;
function OnShowStatus(statusText:BSTR);
function OnPositionChange(lPos:I4;
lLen:I4);
function OnVolumeChange(nVol:I2);
function OnMuteChange(bMute:I4);
function OnTitleChange(bstrTitle:BSTR);
function OnAuthorChange(bstrAuthor:BSTR);
function OnCopyrightChange(bstrCopyright:BSTR);
function OnPlayStateChange(lNewState:I4);
function OnErrorMessage(uSeverity:I2;
uRMACode:I4;
uUserCode:I4;
pUserString:BSTR;
pMoreInfoURL:BSTR;
pErrorString:BSTR);
function OnStatsInfoChange(bstrStats:BSTR);
function OnContacting(bstrContacting:BSTR);
function OnPreSeek(lOldTime:I4;
lNewTime:I4);
function OnPostSeek(lOldTime:I4;
lNewTime:I4);
function OnPresentationOpened;
function OnPresentationClosed;
function OnPreFetchComplete;
function OnLButtonDown(nFlags:INT;
nX:INT;
nY:INT);
function OnLButtonUp(nFlags:INT;
nX:INT;
nY:INT);
function OnRButtonDown(nFlags:INT;
nX:INT;
nY:INT);
function OnRButtonUp(nFlags:INT;
nX:INT;
nY:INT);
function OnMouseMove(nFlags:INT;
nX:INT;
nY:INT);
function OnKeyDown(nFlags:INT;
nKey:INT);
function OnKeyUp(nFlags:INT;
nKey:INT);
function OnKeyPress(nFlags:INT;
nKey:INT);
function OnBuffering(lFlags:I4;
lPercentage:I4);
function OnStateChange(lOldState:I4;
lNewState:I4);
 
to:cxz9
这些函数我都查过,但并有关于声道切换的,不过我还是要谢谢你的帮助,谢谢了!
 
改版了
不能u-p
 
一个设想:

我看RM的时候也遇到了声道问题,我通常是把windows声音控制的wave(波形?)的平衡
项拖到一面,Volume拖到wave拖向面的75%,这样和解霸切换声道差不多了(XP下)。

不知道可不可以勉强这样写~~~可是我也不知道怎么控制每一项的“平衡”项:(
望高手赐教,谢谢:)
 
to 3cs:
UP!你知道WMV的声道怎么切换不?为什么切换时只有一边有声音?
 
非常关注!请高手指点:)
 

Similar threads

回复
0
查看
864
不得闲
D
回复
0
查看
873
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部