XDL Manual

XDL VideoView È°¿ë ù¹ø°

(piXoneer XDL Tutorial)

 

 

 

 

     

NXVideoView¸¦ È°¿ëÇÏ¿© ´Ù¾çÇÑ Æ÷¸ËÀÇ µ¿¿µ»óÀ»

µµ½ÃÇÏ´Â ±â´ÉÀ» ±¸ÇöÇÕ´Ï´Ù.

 

 

2017. 01.

¼öÁ¤ 2019. 02.

 

 

¸ñÂ÷

XDL VideoView È°¿ë ù¹ø°... 1

1    »ç¿ëÇϱâ... 3

1.1    NXVideoView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â... 3

1.2    Driverº¹»çÇϱâ... 4

1.3    ¸Þ´º »ý¼ºÇϱâ... 5

1.4    NXVideoViewÄÁÆ®·Ñ ¿Ã¸®±â... 6

1.5    µ¿¿µ»ó ¿­±â ±â´É... 6

 

 

 

 

1     »ç¿ëÇϱâ

 

1.1    NXVideoView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â

1.1.1     Visual Studio 2010À» ½ÇÇàÇÑ´Ù.

1.1.2     ¸Þ´º [ÆÄÀÏ]-[»õ·Î ¸¸µé±â]-[ÇÁ·ÎÁ§Æ®]¸¦ ¼±ÅÃÇÑ´Ù.

1.1.3     [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚ¿¡¼­ ¿ÞÂÊÀÇ ÅÛÇø´ â¿¡¼­ ¡°Visual C#¡±À» ¼±ÅÃÇÏ°í, ´ëÈ­»óÀÚ Áß°£ÀÇ ¸ñ·Ï¿¡¼­ ¡°Windows Forms ÀÀ¿ë ÇÁ·Î±×·¥¡±À» ¼±ÅÃÇÑ´Ù. ÇÁ·ÎÁ§Æ®ÀÇ À̸§(XDL_VideoView1)À» ÀÔ·ÂÇÏ°í [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

1.1.4     [µµ±¸»óÀÚ]ÀÇ [Ç׸ñ¼±ÅÃ]À» ¼±ÅÃÇÑ´Ù.

[µµ±¸ »óÀÚ] âÀÇ ¡°ÀϹݡ±¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¿© »ý¼ºµÇ´Â Æ˾÷¸Þ´º¿¡¼­ ¡°Ç׸ñ ¼±Åá± ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.

 

 

¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ¾Æ·¡¿Í °°ÀÌ [µµ±¸ »óÀÚ Ç׸ñ ¼±ÅÃ] ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª¸ç, ´ëÈ­»óÀÚ ¾Æ·¡ÂÊ¿¡ ÀÖ´Â ¡°Ã£¾Æº¸±â¡± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

¿­±â ´ëÈ­»óÀÚ¿¡¼­ ¡°C:\Pixoneer\XDL1.2\bin\NXVideo.dll¡± ÆÄÀÏÀ» ¼±ÅÃÇÑ ÈÄ ¡°¿­±â¡±¸¦ Ŭ¸¯ÇÏ°í, [µµ±¸ »óÀÚ Ç׸ñ ¼±ÅÃ] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

 

.Net Framework ±¸¼º¿ä¼Ò ÅÇ¿¡ ´Ù¾çÇÑ ·¹À̾î¿Í NXVideoView°¡ ¼³Á¤µÈ´Ù. ¡°È®ÀΡ±¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

[µµ±¸»óÀÚ] ¿¡ NXVideoLaterOverlay¿Í NXVideoView°¡ Ãß°¡µÊÀ» È®ÀÎÇÑ´Ù.

 

1.1.5     ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]ÀÇ ¿À¸¥ÂÊ ¸¶¿ì½º Ŭ¸¯À» ÅëÇØ [ÂüÁ¶Ãß°¡]¸¦ ¼±ÅÃÇÑ´Ù.

1.1.6 [ã¾Æº¸±â]ÅÇÀ¸·Î À̵¿ÇÑ ÈÄ ¡°C:\Pixoneer\XDL1.2\bin\¡±°æ·Î·Î À̵¿ÇÑ´Ù. CtrlÅ°¸¦ ´©¸¥ ä ¡°NXDL.dll¡±, ¡°NXVideo.dll¡±À» ¼±ÅÃÇÑ ÈÄ ¡°È®ÀΡ±¹öÆ°À» ¼±ÅÃÇÑ´Ù.

 

1.1.7 ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]Ç׿¡ NXDLÀÌ Ãß°¡µÇ¾úÀ½À» È®ÀÎÇÑ´Ù.

 

1.2    Driverº¹»çÇϱâ

Driver´Â ÇöÀç µ¥¸ð ¹öÀü¿¡¼­´Â ¼³Ä¡µÈ °æ·Î·ÎºÎÅÍ ½ÇÇà °æ·Î ÇϺηΠÁ÷Á¢ º¹»çÇÏ¿© ³Ö¾î¾ß ÇÑ´Ù. Â÷±â ¹öÀüÀº º¹»ç¸¦ ÇÏÁö ¾Ê¾Æµµ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ±¸¼ºµÈ´Ù.

 

1.2.1     XDL ¶óÀ̺귯¸®°¡ ¼³Ä¡µÈ °æ·Î(C:\Pixoneer\XDL1.2\bin)·Î À̵¿ÇÑ´Ù.

 

1.2.2     VDDriversÆú´õ¸¦ Åë°·Î º¹»çÇÏ¿© ÇöÀç ÇÁ·ÎÁ§Æ®ÀÇ ¡°¡¦..\XDL_VideoView1\bin\Debug¡±Æú´õ ÇϺο¡ º¹»çÇÏ¿© ³Ö´Â´Ù.

1.2.3     F5Å°¸¦ ´­·¯ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÈ´Ù.

 

1.3    ¸Þ´º »ý¼ºÇϱâ

1.3.1      [µµ±¸»óÀÚ]ÀÇ  MenuStripÀ» ¼±ÅÃÇÏ°í Form1ÀÇ »ó´ÜºÎ¿¡ µå·¡±×ÇÏ¿© À§Ä¡½ÃŲ´Ù.

 

1.3.2      ¸Þ´º¿¡ [File] – [Open]À» ÀÔ·ÂÇÏ¿© »ý¼ºÇÑ´Ù.

 

 

1.3.3      ¸Þ´º¿¡ [Tool] – [Play], [Pause], [Stop], [Resume]À» ÀÔ·ÂÇÏ¿© »ý¼ºÇÑ´Ù.

 

1.4    NXVideoViewÄÁÆ®·Ñ ¿Ã¸®±â

1.4.1     [µµ±¸»óÀÚ]-[ÀϹÝ]¿¡¼­ NXVideoView¸¦ µå·¡±×ÇÏ¿© Form1¿¡ ¿Ã·Á ³õ´Â´Ù. NXVideoViewÄÁÆ®·ÑÀÇ [ºÎ¸ðÄÁÅ×À̳ʿ¡¼­ µµÅ·]¹öÆ°À» ´­·¯ µµÅ·½ÃŲ´Ù

 

1.4.2     [F5]Å°¸¦ ´­·¯ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù. ¾Æ·¡¿Í °°ÀÌ NXVideoViewÄÁÆ®·ÑÀÌ Á¸ÀçÇÏ´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÈ´Ù.

 

1.4.3      ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.

 

1.5    µ¿¿µ»ó ¿­±â ±â´É

1.5.1     µðÀÚÀÎâ¿¡¼­ ToolbarÀÇ [File]-[Open]À» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿ »ý¼ºÇÑ´Ù.

 

 

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{

}

 

1.5.2     NXVideo°´Ã¼µéÀ» »ç¿ëÇϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ NXVideo ³×ÀÓ½ºÆäÀ̽º¸¦ Ãß°¡ÇÑ´Ù.

using Pixoneer.NXDL.NXVideo;

 

1.5.3     NXVideoView±¸Çö½Ã ÇÊ¿äÇÑ XVideoIO, XVideo, XVideoChannel°´Ã¼¸¦ ¼±¾ðÇÑ´Ù.

XVideoIO m_VideoIO; // VideoÀÔÃâ·Â¿¡ °üÇÑ °´Ã¼¸¦ »ý¼º. 
// XVideoIO°´Ã¼´Â XVideo°´Ã¼¸¦ »ý¼ºÇÑ´Ù.

XVideo m_Video; // XVideo°´Ã¼´Â ½ÇÁúÀûÀ¸·Î ºñµð¿À ½ºÆ®¸®¹ÖÀ» ¹Þ¾Æ¼­ ó¸®ÇÏ´Â °´Ã¼ÀÌ´Ù. 
XVideoChannel m_channel;  
// XVideoChannelÀº º¸Åë 1°³ÀÇ ÆÄÀÏ¿¡´Â 1°³ÀÇ ½ºÆ®¸®¹ÖÀÌ Á¸ÀçÇÏÁö¸¸, 
// MPEG2TS¿Í °°ÀÌ MultiChannelÀ» Áö¿øÇÏ´Â °Íµµ Á¸ÀçÇÑ´Ù.
// °á±¹ XVideoChannelÀÌ ½ºÆ®¸®¹Ö¿¡ ´ëÇÑ ÆÄ½Ì ¹× µµ½Ã¸¦ À§ÇÑ 
// ºñµð¿À Frame µ¥ÀÌÅÍ °ü¸®¸¦ ¼öÇàÇÑ´Ù.

 

1.5.4     Form1»ý¼ºÀÚ¿¡¼­ XVideoIOÀÇ °´Ã¼ »ý¼ºÀ» ¼öÇàÇÑ´Ù.

public Form1()
{
InitializeComponent();
m_VideoIO = new XVideoIO(); // VideoIO¸¦ »ý¼º
}

 

1.5.5     File¿­±â ¹öÆ°À» ´­·¶À» ¶§ »ý¼ºµÉ Open ´ëÈ­»óÀÚ¿Í ¼±ÅÃµÈ ÆÄÀÏ¿¡ ´ëÇÑ XVideo°´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¶ÇÇÑ, XVideo°´Ã¼¿¡ ½ÇÁ¦ ½ºÆ®¸®¹ÖÀ» ´ã´çÇÏ´Â XVideoChannel°´Ã¼¸¦ È°¼ºÈ­(Activate) ½ÃÄÑ FrameÀ» ³»ºÎÀûÀ¸·Î »ý¼ºÇϵµ·Ï Áö½ÃÇÑ´Ù.

 

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    // ÆÄÀÏ OpenÀ» ¼öÇàÇÑ´Ù.
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "TS file(*.ts)|*.ts||";
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() != DialogResult.OK) return;

    // XVideoIO°´Ã¼·ÎÅÍ XVideo°´Ã¼¸¦ »ý¼ºÇÑ´Ù.
    string strError = null;
    m_Video = m_VideoIO.OpenFile(openFileDialog.FileName, "XFFMPDRIVER", 
out strError);

    if (m_Video == null)
    {
        MessageBox.Show(strError);
        return;
    }

    // XVideoView°´Ã¼¿¡ XVideo°´Ã¼¿Í Multi ChannelÀÎ °æ¿ì¸¦ °í·ÁÇÏ¿© 
// XVideo°´Ã¼ ¾ÈÀÇ Channel¿¡ ´ëÇÑ À妽º¸¦ ¼³Á¤ÇÑ´Ù. 
    int nIdxChannel = 0;
    nxVideoView1.SetVideoChannel(m_Video, nIdxChannel);


    // XVideo°´Ã¼·ÎºÎÅÍ Æ¯Á¤ À妽º¿¡ ÇØ´çÇÏ´Â ChannelÀ» ²¨³½´Ù.
    m_channel = m_Video.GetChannel(nIdxChannel);

    if (m_channel == null)
    {
        MessageBox.Show("Channel is not valid");
    }

    // ChannelÀ» È°¼ºÈ­ ½ÃÅ°°í Play½ÃŲ´Ù.
    m_channel.Activate();

}

1.5.6     ¸Þ´º¿¡¼­ Play, Pause, Resume, Stop¹öÆ°À» ÅëÇØ ÀÚµ¿À¸·Î ÇÔ¼ö¸¦ »ý¼ºÇÑ´Ù.

private void playToolStripMenuItem_Click(object sender, EventArgs e)
{
    m_channel.Play();
}

private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
{
    m_channel.Pause();
}

private void resumeToolStripMenuItem_Click(object sender, EventArgs e)
{
    m_channel.Resume();
}

private void stopToolStripMenuItem_Click(object sender, EventArgs e)
{
    m_channel.Stop();
}

 

1.5.7     Á¾·á½Ã¿¡ XVideo°´Ã¼¿Í XVideoView¿Í °ü°è¸¦ ²÷±â À§Çؼ­ Form1ÀÇ ¼Ó¼º¿¡¼­ FormÀÇ Close¸¦ À§ÇÑ ÇÔ¼ö¸¦ ÀÚµ¿ »ý¼ºÇÑ´Ù.

 

 

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // Video Á¾·á½Ã¿¡ XVideoView¿Í XVideo¿ÍÀÇ °ü°è¸¦ Á¤¸®ÇÑ´Ù.
    nxVideoView1.ResetVideoChannel();
    if (m_Video != null)
        m_Video.Close();
}

1.5.8     [F5]Å°¸¦ ´­·¯ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù. [File]-[Open]¸Þ´º¸¦ ´­·¯ football.tsÆÄÀÏÀ» ¿¬´Ù. [Tool]-[Play], [Tool]-[Pause], [Tool]-[Resume], [Tool]-[Stop]À» ´­·¯ ±â´ÉÀ» È®ÀÎÇÑ´Ù.