2010-06-18 5 views
2

C#에서 WMV 파일의 이미지 크기를 읽으려고합니다.
여기에 설명 된 것을 사용하여 시도했습니다 :
How do I get the duration of a video file using C#?
값이있는 속성은 Duration뿐입니다.

아이디어가 있으십니까?
감사합니다.C#에서 WMV 해상도 읽기

+0

파일을 재생하려고합니까, 아니면 헤더 정보 만 가져 오시겠습니까? – egrunin

+0

나는 그것을 재생할 필요가 없습니다, 그냥 정보를 얻을. –

답변

1

나는 그것이 다 본 적이 유일한 방법은 재생 및 오픈 이벤트에 부착입니다 .

0

연결된 예제의 코드를 사용하지만 명시 적으로 함수 호출을 수행하여 heightwidth을 얻습니다.

예 :

static WindowsMediaPlayerClass player; 

    static void Main() 
    { 
     player = new WindowsMediaPlayerClass(); 
     IWMPMedia mediaInfo = player.newMedia("test.wmv"); 
     player.OpenStateChange += new _WMPOCXEvents_OpenStateChangeEventHandler(player_OpenStateChange); 
     player.currentMedia = mediaInfo; 

     //... 

     Console.WriteLine("Done."); 
     Console.ReadKey(); 
    } 

    private static void player_OpenStateChange(int state) 
    { 
     if (state == (int)WMPOpenState.wmposMediaOpen) 
     { 
      Console.WriteLine("height = " + player.currentMedia.imageSourceHeight); 
      Console.WriteLine("width = " + player.currentMedia.imageSourceWidth); 
     } 
    } 

당신이 종료하기 전에 모든 자원을 처분 할 수 있습니다 :

using WMPLib; // this file is called Interop.WMPLib.dll 

WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass(); 
IWMPMedia mediaInfo = wmp.newMedia("myfile.wmv"); 

long height, width; 
mediaInfo.get_imageSourceHeight(height); 
mediaInfo.get_imageSourceWidth(width); 
+0

컴파일되지 않음 : 'WMPLib.IWMPMedia.imageSourceHeight.get': 명시 적으로 연산자 또는 접근자를 호출 할 수 없습니다. –

+0

및 mediaInfo.imageSourceHeight는 0을 반환합니다. –

+0

그는 맞습니다. 파일이 ** 재생 **되지 않는 한 imageSourceHeight 및 imageSourceWidth는 0을 반환합니다. – egrunin

0

저는 무료 NReco.VideoInfo.dll을 사용하는 것을 선호합니다. 주로 Windows Media Player가 싫어서. 나는 WMP가 신뢰할 수 없다는 것을 발견했다.

여기 다운로드 링크가 있습니다 : http://www.nrecosite.com/video_info_net.aspx 다른 것들에도 유용합니다.

var ffProbe = new NReco.VideoInfo.FFProbe(); 
var videoInfo = ffProbe.GetMediaInfo(pathToFile); 
Int32 tmpHeight = videoInfo.Streams[0].Height; 
Int32 tmpWidth = videoInfo.Streams[0].Width;