如何让同一个媒体在两个Panel上显示?(有难度........)(20分)

  • 主题发起人 主题发起人 dafu2
  • 开始时间 开始时间
D

dafu2

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在两个panel上同时显示一个媒体视频,当然有人建议做两个Player同时播。
这样开销很大,不理想!

据说DirectShow可以实现,通过什么分流的方式,我找了好久都没有找到方法。
还是只能在一个panel上播,各位兄台多多帮忙!

程序大概如下:

hr := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, MyGraph);
if (FAILED(hr)) then
exit;
hr := MyGraph.RenderFile('D:/Video/test.wmv', nil);
if (FAILED(hr)) then
exit;
hr := MyGraph.QueryInterface(IID_IMediaEventEx, MyMediaEvent);
if (FAILED(hr)) then
exit;
//MediaEvent.SetNotifyWindow(self.Handle, WM_GraphNotify, 0);
//第一个是确定哪个窗体将得到消息,第二个是传递什么消息.第三个无所谓.
hr := MyGraph.QueryInterface(IID_IMediaControl, MyMediaControl);
if (FAILED(hr)) then
exit;
hr := MyGraph.QueryInterface(IID_IMediaSeeking, MyMediaSeeking);
if (FAILED(hr)) then
exit;
hr := MyGraph.QueryInterface(IID_IVideoWindow, MyVideoWindow);
hr := MyGraph.QueryInterface(IID_IVideoWindow, MyVideoWindow1);
if (FAILED(hr)) then
exit;
MyVideoWindow.put_Owner(Panel1.Handle);
//MyVideoWindow.put_Owner(panel2.Handle);
MyVideoWindow.put_WindowStyle(WS_Child or WS_CLIPCHILDREN);

MyVideoWindow.SetWindowPosition(0, 0, 300, 300);
MyMediaControl.Run;
 
没做过,幸好只是路过.等待高手的出现
 
我以前是用 的vfw捕获 然后自己画的,画20多个都没什么问题

www.zn123.com上面有demo
 
多人接受答案了。
 
后退
顶部