コード例 #1
0
ファイル: FormLib.cs プロジェクト: MizutaniEri/firstdnet
 public string GetMediaInfoString(string fileName)
 {
     string result = "";
     if (fileName == "") return result;
     result += fileName + "\n";
     //if (graphBuilder == null) return result;
     IMediaDet mediaDet = null;
     AMMediaType mt = new AMMediaType();
     try
     {
         mediaDet = (IMediaDet)new MediaDet();
         mediaDet.put_Filename(fileName);
         int streams;
         mediaDet.get_OutputStreams(out streams);
         for (int i = 0; i < streams; i++)
         {
             mediaDet.put_CurrentStream(i);
             mediaDet.get_StreamMediaType(mt);
             result += GetMediaTypeString(mt) + "\n";
         }
     }
     catch { }
     finally
     {
         if (mediaDet != null) Marshal.ReleaseComObject(mediaDet);
     }
     return result;
 }
コード例 #2
0
ファイル: FormLib.cs プロジェクト: MizutaniEri/firstdnet
        private unsafe string GetMediaTypeString(AMMediaType mt)
        {
            string result = "";
            try
            {
                if (mt.majorType == MediaType.AnalogAudio) result += "AnalogAudio";
                else if (mt.majorType == MediaType.AnalogVideo) result += "AnalogVideo";
                else if (mt.majorType == MediaType.Audio) result += "Audio";
                else if (mt.majorType == MediaType.AuxLine21Data) result += "AuxLine21Data";
                else if (mt.majorType == MediaType.DTVCCData) result += "DTVCCData";
                else if (mt.majorType == MediaType.File) result += "File";
                else if (mt.majorType == MediaType.Interleaved) result += "Interleaved";
                else if (mt.majorType == MediaType.LMRT) result += "LMRT";
                else if (mt.majorType == MediaType.Midi) result += "Midi";
                else if (mt.majorType == MediaType.Mpeg2Sections) result += "Mpeg2Sections";
                else if (mt.majorType == MediaType.MSTVCaption) result += "MSTVCaption";
                else if (mt.majorType == MediaType.ScriptCommand) result += "ScriptCommand";
                else if (mt.majorType == MediaType.Stream) result += "Stream";
                else if (mt.majorType == MediaType.Text) result += "Text";
                else if (mt.majorType == MediaType.Timecode) result += "Timecode";
                else if (mt.majorType == MediaType.URLStream) result += "URLStream";
                else if (mt.majorType == MediaType.VBI) result += "VBI";
                else if (mt.majorType == MediaType.Video) result += "Video";
                else result += mt.majorType.ToString();//"UnKnown";
                result += ": ";
                if (mt.subType == MediaSubType.A2B10G10R10) result += "A2B10G10R10";
                else if (mt.subType == MediaSubType.A2R10G10B10) result += "A2R10G10B10";
                else if (mt.subType == MediaSubType.AI44) result += "AI44";
                else if (mt.subType == MediaSubType.AIFF) result += "AIFF";
                else if (mt.subType == MediaSubType.AnalogVideo_NTSC_M) result += "AnalogVideo_NTSC_M";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_B) result += "AnalogVideo_PAL_B";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_D) result += "AnalogVideo_PAL_D";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_G) result += "AnalogVideo_PAL_G";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_H) result += "AnalogVideo_PAL_H";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_I) result += "AnalogVideo_PAL_I";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_M) result += "AnalogVideo_PAL_M";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_N) result += "AnalogVideo_PAL_N";
                else if (mt.subType == MediaSubType.AnalogVideo_PAL_N_COMBO) result += "AnalogVideo_PAL_N_COMBO";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_B) result += "AnalogVideo_SECAM_B";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_D) result += "AnalogVideo_SECAM_D";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_G) result += "AnalogVideo_SECAM_G";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_H) result += "AnalogVideo_SECAM_H";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_K) result += "AnalogVideo_SECAM_K";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_K1) result += "AnalogVideo_SECAM_K1";
                else if (mt.subType == MediaSubType.AnalogVideo_SECAM_L) result += "AnalogVideo_SECAM_L";
                else if (mt.subType == MediaSubType.ARGB1555) result += "ARGB1555";
                else if (mt.subType == MediaSubType.ARGB1555_D3D_DX7_RT) result += "ARGB1555_D3D_DX7_RT";
                else if (mt.subType == MediaSubType.ARGB1555_D3D_DX9_RT) result += "ARGB1555_D3D_DX9_RT";
                else if (mt.subType == MediaSubType.ARGB32) result += "ARGB32";
                else if (mt.subType == MediaSubType.ARGB32_D3D_DX7_RT) result += "ARGB32_D3D_DX7_RT";
                else if (mt.subType == MediaSubType.ARGB32_D3D_DX9_RT) result += "ARGB32_D3D_DX9_RT";
                else if (mt.subType == MediaSubType.ARGB4444) result += "ARGB4444";
                else if (mt.subType == MediaSubType.ARGB4444_D3D_DX7_RT) result += "ARGB4444_D3D_DX7_RT";
                else if (mt.subType == MediaSubType.ARGB4444_D3D_DX9_RT) result += "ARGB4444_D3D_DX9_RT";
                else if (mt.subType == MediaSubType.Asf) result += "Asf";
                else if (mt.subType == MediaSubType.AtscSI) result += "AtscSI";
                else if (mt.subType == MediaSubType.AU) result += "AU";
                else if (mt.subType == MediaSubType.Avi) result += "Avi";
                else if (mt.subType == MediaSubType.AYUV) result += "AYUV";
                else if (mt.subType == MediaSubType.CFCC) result += "CFCC";
                else if (mt.subType == MediaSubType.CLJR) result += "CLJR";
                else if (mt.subType == MediaSubType.CLPL) result += "CLPL";
                else if (mt.subType == MediaSubType.CPLA) result += "CPLA";
                else if (mt.subType == MediaSubType.Data708_608) result += "Data708_608";
                else if (mt.subType == MediaSubType.DOLBY_AC3_SPDIF) result += "DOLBY_AC3_SPDIF";
                else if (mt.subType == MediaSubType.DolbyAC3) result += "DolbyAC3";
                else if (mt.subType == MediaSubType.DRM_Audio) result += "DRM_Audio";
                else if (mt.subType == MediaSubType.DssAudio) result += "DssAudio";
                else if (mt.subType == MediaSubType.DssVideo) result += "DssVideo";
                else if (mt.subType == MediaSubType.DtvCcData) result += "DtvCcData";
                else if (mt.subType == MediaSubType.dv25) result += "dv25";
                else if (mt.subType == MediaSubType.dv50) result += "dv50";
                else if (mt.subType == MediaSubType.DvbSI) result += "DvbSI";
                else if (mt.subType == MediaSubType.DVCS) result += "DVCS";
                else if (mt.subType == MediaSubType.dvh1) result += "dvh1";
                else if (mt.subType == MediaSubType.dvhd) result += "dvhd";
                else if (mt.subType == MediaSubType.DVSD) result += "DVSD";
                else if (mt.subType == MediaSubType.dvsl) result += "dvsl";
                else if (mt.subType == MediaSubType.H264) result += "H264";
                else if (mt.subType == MediaSubType.I420) result += "I420";
                else if (mt.subType == MediaSubType.IA44) result += "IA44";
                else if (mt.subType == MediaSubType.IEEE_FLOAT) result += "IEEE_FLOAT";
                else if (mt.subType == MediaSubType.IF09) result += "IF09";
                else if (mt.subType == MediaSubType.IJPG) result += "IJPG";
                else if (mt.subType == MediaSubType.IMC1) result += "IMC1";
                else if (mt.subType == MediaSubType.IMC2) result += "IMC2";
                else if (mt.subType == MediaSubType.IMC3) result += "IMC3";
                else if (mt.subType == MediaSubType.IMC4) result += "IMC4";
                else if (mt.subType == MediaSubType.IYUV) result += "IYUV";
                else if (mt.subType == MediaSubType.Line21_BytePair) result += "Line21_BytePair";
                else if (mt.subType == MediaSubType.Line21_GOPPacket) result += "Line21_GOPPacket";
                else if (mt.subType == MediaSubType.Line21_VBIRawData) result += "Line21_VBIRawData";
                else if (mt.subType == MediaSubType.MDVF) result += "MDVF";
                else if (mt.subType == MediaSubType.MJPG) result += "MJPG";
                else if (mt.subType == MediaSubType.MPEG1Audio) result += "MPEG1Audio";
                else if (mt.subType == MediaSubType.MPEG1AudioPayload) result += "MPEG1AudioPayload";
                else if (mt.subType == MediaSubType.MPEG1Packet) result += "MPEG1Packet";
                else if (mt.subType == MediaSubType.MPEG1Payload) result += "MPEG1Payload";
                else if (mt.subType == MediaSubType.MPEG1System) result += "MPEG1System";
                else if (mt.subType == MediaSubType.MPEG1SystemStream) result += "MPEG1SystemStream";
                else if (mt.subType == MediaSubType.MPEG1Video) result += "MPEG1Video";
                else if (mt.subType == MediaSubType.MPEG1VideoCD) result += "MPEG1VideoCD";
                else if (mt.subType == MediaSubType.Mpeg2Audio) result += "Mpeg2Audio";
                else if (mt.subType == MediaSubType.Mpeg2Data) result += "Mpeg2Data";
                else if (mt.subType == MediaSubType.Mpeg2Program) result += "Mpeg2Program";
                else if (mt.subType == MediaSubType.Mpeg2Transport) result += "Mpeg2Transport";
                else if (mt.subType == MediaSubType.Mpeg2TransportStride) result += "Mpeg2TransportStride";
                else if (mt.subType == MediaSubType.Mpeg2Video) result += "Mpeg2Video";
                else if (mt.subType == MediaSubType.None) result += "None";
                else if (mt.subType == MediaSubType.NV12) result += "NV12";
                else if (mt.subType == MediaSubType.NV24) result += "NV24";
                else if (mt.subType == MediaSubType.Overlay) result += "Overlay";
                else if (mt.subType == MediaSubType.PCM) result += "PCM";
                else if (mt.subType == MediaSubType.PCMAudio_Obsolete) result += "PCMAudio_Obsolete";
                else if (mt.subType == MediaSubType.PLUM) result += "PLUM";
                else if (mt.subType == MediaSubType.QTJpeg) result += "QTJpeg";
                else if (mt.subType == MediaSubType.QTMovie) result += "QTMovie";
                else if (mt.subType == MediaSubType.QTRle) result += "QTRle";
                else if (mt.subType == MediaSubType.QTRpza) result += "QTRpza";
                else if (mt.subType == MediaSubType.QTSmc) result += "QTSmc";
                else if (mt.subType == MediaSubType.RAW_SPORT) result += "RAW_SPORT";
                else if (mt.subType == MediaSubType.RGB1) result += "RGB1";
                else if (mt.subType == MediaSubType.RGB16_D3D_DX7_RT) result += "RGB16_D3D_DX7_RT";
                else if (mt.subType == MediaSubType.RGB16_D3D_DX9_RT) result += "RGB16_D3D_DX9_RT";
                else if (mt.subType == MediaSubType.RGB24) result += "RGB24";
                else if (mt.subType == MediaSubType.RGB32) result += "RGB32";
                else if (mt.subType == MediaSubType.RGB32_D3D_DX7_RT) result += "RGB32_D3D_DX7_RT";
                else if (mt.subType == MediaSubType.RGB32_D3D_DX9_RT) result += "RGB32_D3D_DX9_RT";
                else if (mt.subType == MediaSubType.RGB4) result += "RGB4";
                else if (mt.subType == MediaSubType.RGB555) result += "RGB555";
                else if (mt.subType == MediaSubType.RGB565) result += "RGB565";
                else if (mt.subType == MediaSubType.RGB8) result += "RGB8";
                else if (mt.subType == MediaSubType.S340) result += "S340";
                else if (mt.subType == MediaSubType.S342) result += "S342";
                else if (mt.subType == MediaSubType.SPDIF_TAG_241h) result += "SPDIF_TAG_241h";
                else if (mt.subType == MediaSubType.TELETEXT) result += "TELETEXT";
                else if (mt.subType == MediaSubType.TVMJ) result += "TVMJ";
                else if (mt.subType == MediaSubType.UYVY) result += "UYVY";
                else if (mt.subType == MediaSubType.VideoImage) result += "VideoImage";
                else if (mt.subType == MediaSubType.VPS) result += "VPS";
                else if (mt.subType == MediaSubType.VPVBI) result += "VPVBI";
                else if (mt.subType == MediaSubType.VPVideo) result += "VPVideo";
                else if (mt.subType == MediaSubType.WAKE) result += "WAKE";
                else if (mt.subType == MediaSubType.WAVE) result += "WAVE";
                else if (mt.subType == MediaSubType.WebStream) result += "WebStream";
                else if (mt.subType == MediaSubType.WSS) result += "WSS";
                else if (mt.subType == MediaSubType.Y211) result += "Y211";
                else if (mt.subType == MediaSubType.Y411) result += "Y411";
                else if (mt.subType == MediaSubType.Y41P) result += "Y41P";
                else if (mt.subType == MediaSubType.YUY2) result += "YUY2";
                else if (mt.subType == MediaSubType.YUYV) result += "YUYV";
                else if (mt.subType == MediaSubType.YV12) result += "YV12";
                else if (mt.subType == MediaSubType.YVU9) result += "YVU9";
                else if (mt.subType == MediaSubType.YVYU) result += "YVYU";
                else if (mt.subType == MediaSubType.MS_Mpeg4) result += "MS_Mpeg4";
                else if (mt.subType == MediaSubType.Divx) result += "Divx";
                else if (mt.subType == MediaSubType.Divx5) result += "Divx5";
                else if (mt.subType == MediaSubType.VoxWare) result += "VoxWare";
                else if (mt.subType == MediaSubType.Mpeg_Layer3) result += "Mpeg_Layer3";
                else if (mt.subType == MediaSubType.LPCM) result += "LPCM";
                else if (mt.subType == MediaSubType.Vorbis) result += "Vorbis";
                else result += mt.subType.ToString();//"UnKnown";
                result += ": ";
                if (mt.formatType == FormatType.VideoInfo)
                {
                    BITMAPINFOHEADER BIH = ((VideoInfoHeader*)mt.formatPtr)->BmiHeader;
                    result += string.Format("{0}x{1}, {2}bits ", BIH.biWidth, BIH.biHeight, BIH.biBitCount);
                }
                else if (mt.formatType == FormatType.VideoInfo2)
                {
                    BITMAPINFOHEADER BIH = ((VideoInfoHeader2*)mt.formatPtr)->BmiHeader;
                    result += string.Format("{0}x{1}, {2}bits ", BIH.biWidth, BIH.biHeight, BIH.biBitCount);
                }
                else if (mt.formatType == FormatType.WaveEx)
                {
                    WaveFormatEx* pWFE = (WaveFormatEx*)mt.formatPtr;
                    switch (pWFE->wFormatTag)
                    {
                        case 0x0001: result += "PCM"; break; // common
                        case 0x0002: result += "ADPCM"; break;
                        case 0x0003: result += "IEEE_FLOAT"; break;
                        case 0x0005: result += "IBM_CVSD"; break;
                        case 0x0006: result += "ALAW"; break;
                        case 0x0007: result += "MULAW"; break;
                        case 0x0010: result += "OKI_ADPCM"; break;
                        case 0x0011: result += "DVI_ADPCM"; break;
                        case 0x0012: result += "MEDIASPACE_ADPCM"; break;
                        case 0x0013: result += "SIERRA_ADPCM"; break;
                        case 0x0014: result += "G723_ADPCM"; break;
                        case 0x0015: result += "DIGISTD"; break;
                        case 0x0016: result += "DIGIFIX"; break;
                        case 0x0017: result += "DIALOGIC_OKI_ADPCM"; break;
                        case 0x0018: result += "MEDIAVISION_ADPCM"; break;
                        case 0x0020: result += "YAMAHA_ADPCM"; break;
                        case 0x0021: result += "SONARC"; break;
                        case 0x0022: result += "DSPGROUP_TRUESPEECH"; break;
                        case 0x0023: result += "ECHOSC1"; break;
                        case 0x0024: result += "AUDIOFILE_AF36"; break;
                        case 0x0025: result += "APTX"; break;
                        case 0x0026: result += "AUDIOFILE_AF10"; break;
                        case 0x0030: result += "DOLBY_AC2"; break;
                        case 0x0031: result += "GSM610"; break;
                        case 0x0032: result += "MSNAUDIO"; break;
                        case 0x0033: result += "ANTEX_ADPCME"; break;
                        case 0x0034: result += "CONTROL_RES_VQLPC"; break;
                        case 0x0035: result += "DIGIREAL"; break;
                        case 0x0036: result += "DIGIADPCM"; break;
                        case 0x0037: result += "CONTROL_RES_CR10"; break;
                        case 0x0038: result += "NMS_VBXADPCM"; break;
                        case 0x0039: result += "CS_IMAADPCM"; break;
                        case 0x003A: result += "ECHOSC3"; break;
                        case 0x003B: result += "ROCKWELL_ADPCM"; break;
                        case 0x003C: result += "ROCKWELL_DIGITALK"; break;
                        case 0x003D: result += "XEBEC"; break;
                        case 0x0040: result += "G721_ADPCM"; break;
                        case 0x0041: result += "G728_CELP"; break;
                        case 0x0050: result += "MPEG"; break;
                        case 0x0055: result += "MPEGLAYER3"; break;
                        case 0x0060: result += "CIRRUS"; break;
                        case 0x0061: result += "ESPCM"; break;
                        case 0x0062: result += "VOXWARE"; break;
                        case 0x0063: result += "CANOPUS_ATRAC"; break;
                        case 0x0064: result += "G726_ADPCM"; break;
                        case 0x0065: result += "G722_ADPCM"; break;
                        case 0x0066: result += "DSAT"; break;
                        case 0x0067: result += "DSAT_DISPLAY"; break;
                        case 0x0075: result += "VOXWARE"; break;// aditionnal  ???
                        case 0x0080: result += "SOFTSOUND"; break;
                        case 0x0100: result += "RHETOREX_ADPCM"; break;
                        case 0x0200: result += "CREATIVE_ADPCM"; break;
                        case 0x0202: result += "CREATIVE_FASTSPEECH8"; break;
                        case 0x0203: result += "CREATIVE_FASTSPEECH10"; break;
                        case 0x0220: result += "QUARTERDECK"; break;
                        case 0x0300: result += "FM_TOWNS_SND"; break;
                        case 0x0400: result += "BTV_DIGITAL"; break;
                        case 0x1000: result += "OLIGSM"; break;
                        case 0x1001: result += "OLIADPCM"; break;
                        case 0x1002: result += "OLICELP"; break;
                        case 0x1003: result += "OLISBC"; break;
                        case 0x1004: result += "OLIOPR"; break;
                        case 0x1100: result += "LH_CODEC"; break;
                        case 0x1400: result += "NORRIS"; break;
                        default: result += pWFE->wFormatTag.ToString("X"); break;
                    }
                    result += string.Format(",{0}Hz,{1}Ch ", pWFE->nSamplesPerSec, pWFE->nChannels);
                }
                else if (mt.formatType == FormatType.MpegVideo)
                {
                    BITMAPINFOHEADER BIH = ((MPEG1VideoInfo*)mt.formatPtr)->hdr.BmiHeader;
                    result += string.Format("{0}x{1}, {2}bits ", BIH.biWidth, BIH.biHeight, BIH.biBitCount);
                }
                else if (mt.formatType == FormatType.Mpeg2Video)
                {
                    BITMAPINFOHEADER BIH = ((MPEG2VideoInfo*)mt.formatPtr)->hdr.BmiHeader;
                    result += string.Format("{0}x{1}, {2}bits ", BIH.biWidth, BIH.biHeight, BIH.biBitCount);
                }
                else if (mt.formatType == FormatType.DvInfo) result += "DVInfo";
                else if (mt.formatType == FormatType.MpegStreams) result += "MPEGStreams";
                else if (mt.formatType == FormatType.DolbyAC3) result += "DolbyAC3";
                else if (mt.formatType == FormatType.Mpeg2Audio) result += "MPEG2Audio";
                else if (mt.formatType == FormatType.DVD_LPCMAudio) result += "DVD_LPCMAudio";
                else result += "Unknown";
            }
            catch { }
            finally { }

            return result;
        }
コード例 #3
0
ファイル: FormLib.cs プロジェクト: MizutaniEri/firstdnet
        public void GetMediaContents(string fileName, out bool video, out bool audio, out long audioLength)
        {
            video = false;
            audio = false;
            audioLength = 0;
            if (fileName == "") return;
            IMediaDet mediaDet = null;
            AMMediaType mt = new AMMediaType();
            IFilterGraph2 fg = (IFilterGraph2)new FilterGraph();
            try
            {
                string ext = Path.GetExtension(fileName);
                switch (ext.ToLower())
                {
                    case ".asx":
                    case ".wax":
                    case ".wvx":
                    //case ".m3u":
                        return;
                }
                try
                {
                    RegistryKey regkey = Registry.ClassesRoot.OpenSubKey(ext);
                    switch (((string)regkey.GetValue("PerceivedType", "")).ToLower())
                    {
                        case "audio":
                            audio = true;
                            break;
                        default://����r�f�I
                        //case "video":
                            video = true;
                            break;
                        //default: return;
                    }
                    regkey.Close();
                }
                catch { }

                mediaDet = (IMediaDet)new MediaDet();
                mediaDet.put_Filename(fileName);
                int streams;
                mediaDet.get_OutputStreams(out streams);
                for (int i = 0; i < streams; i++)
                {
                    mediaDet.put_CurrentStream(i);
                    mediaDet.get_StreamMediaType(mt);
                    video = video | (mt.majorType == MediaType.AnalogVideo) | (mt.majorType == MediaType.Video);
                    audio = audio | (mt.majorType == MediaType.AnalogAudio) | (mt.majorType == MediaType.Audio) | (mt.majorType == MediaType.Midi);
                }
                //if ((!video) && ((uint)mediaDet.EnterBitmapGrabMode(0.0) != 0x80040200)) video = true;
                if (audio&&(!video)&&(fg.RenderFile(fileName, null) == 0))
                {
                    ((IMediaSeeking)fg).GetStopPosition(out audioLength);
                }
            }
            catch { }
            finally
            {
                if (mediaDet != null) Marshal.ReleaseComObject(mediaDet);
                if (fg != null) Marshal.ReleaseComObject(fg);
            }
        }