'동영상'에 해당되는 글 1건

  1. 2010.03.18 C#에서 IVideoWindow 사용. 1
DirectShow2010. 3. 18. 12:20

동영상 프로그램 제작 시 새창을 띄우지 않고 동영상이 플레이되길 원한다면 IVideoWindow 인터페이스를 이용하여 비디오 재생 윈도우를 동영상 프로그램에 붙여야 합니다. IVideoWindow를 설정하지 않을 경우 기본적으로 새 창에서 동영상이 플레이 됩니다.

밑에는 간단한 사용 방법 입니다.


public partial class Form1 : Form
    {
        IGraphBuilder pGraph = null;
        IMediaControl pControl = null;
        //IMediaEvent pEvent = null;
        IVideoWindow videoWindow = null;

        private string strTitle = "";   //파일 대화상자의 제목표시줄에 표시될 문자열.
        private string strTitleTmp = "";    //임시 제목표시줄 저장 변수.
        private string strFilePath = "";    //선택한 파일 경로.


        public Form1()
        {
            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }


        private void btnList_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Filter = "미디어 파일(avi, wmv)|*.avi;*.wmv|All Files|*.*";

            if (DialogResult.OK == openFile.ShowDialog())
            {
                strFilePath = openFile.FileName;
                strTitleTmp = strFilePath;

                int titleIndex = strTitleTmp.LastIndexOf("\\");

                strTitle = strTitleTmp.Substring(titleIndex + 1);
                this.Text = strTitle;
            }
        }


        private void btnPlay_Click(object sender, EventArgs e)
        {
            pGraph = (IGraphBuilder)new FilterGraph();
            pControl = (IMediaControl)pGraph;
            videoWindow = (IVideoWindow)pGraph;

            pGraph.RenderFile(strFilePath, "");

            //붙이고자 하는 부모 윈도우의 핸들을 받습니다.
            this.videoWindow.put_Owner(this.Handle);
            //비디오 윈도우의 스타일을 자식 윈도우로 변경합니다.
            this.videoWindow.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren);
            //비디오 윈도우가 재생될 위치를 지정합니다.
            this.videoWindow.SetWindowPosition(this.panel1.Left, this.panel1.Top, this.panel1.Width, this.panel1.Height);
            //비디오 윈도우가 표시되도록 설정합니다.
            this.videoWindow.put_Visible(OABool.True);

            pControl.Run();
        }


        private void btnStop_Click(object sender, EventArgs e)
        {
            pControl.Stop();
        }
    }

Posted by 쿵캉켕