// ******************************************** /// <summary> /// ファイルのヘッダーを読んでムービーファイルの種類を識別 /// </summary> /// <param name="p">ムービーファイルのパス</param> /// <returns>ムービーの種類</returns> private MOVIE_TYPE GetHeader(string p) { MOVIE_TYPE ret = MOVIE_TYPE.OTHER; byte[] bs = GetByteData(p, 16, 0); if (bs.Length <= 0) { return(ret); } if ((bs[0] == 0x52) && (bs[1] == 0x49) && (bs[2] == 0x46) && (bs[3] == 0x46) && // 52 49 46 46 (bs[8] == 0x41) && (bs[9] == 0x56) && (bs[10] == 0x49) && (bs[11] == 0x20)) //41 56 49 20 { ret = MOVIE_TYPE.AVI; } else if ((bs[4] == 0x66) && (bs[5] == 0x74) && (bs[6] == 0x79) && (bs[7] == 0x70)) //66 74 79 70 { if ((bs[8] == 0x71) && (bs[9] == 0x74)) //71 74 20 20 { ret = MOVIE_TYPE.QT; } else if ((bs[8] == 0x6D) && (bs[9] == 0x70) && (bs[10] == 0x34)) //6D 70 34 { ret = MOVIE_TYPE.MP4; } } return(ret); }
// ******************************************** public void Init() { m_MOVIE_TYPE = MOVIE_TYPE.OTHER; m_FilePath = ""; m_FileName = ""; m_Width = 0; m_Height = 0; m_FrameRate = 0; m_Duration = 0; m_FileSize = 0; Comment = ""; }
// ******************************************** /// <summary> /// ムービーファイルを読み込んでいろいろ調べる /// </summary> /// <param name="p">ムービーのパス</param> /// <returns>対象のムービーだったらtrue</returns> public bool SetFilePath(string p) { bool ret = false; Init(); if (File.Exists(p) == false) { return(ret); } m_MOVIE_TYPE = GetHeader(p); if (m_MOVIE_TYPE == MOVIE_TYPE.OTHER) { return(ret); } m_FilePath = p; m_FileName = Path.GetFileName(p); FileInfo finfo = new FileInfo(p); m_FileSize = finfo.Length; switch (m_MOVIE_TYPE) { case MOVIE_TYPE.AVI: ret = GetStatusAVI(); break; case MOVIE_TYPE.QT: case MOVIE_TYPE.MP4: ret = GetStatusQT(); break; } if (ret == false) { Init(); } return(ret); }