C#에서 WMV 파일의 이미지 크기를 읽으려고합니다.
여기에 설명 된 것을 사용하여 시도했습니다 :
How do I get the duration of a video file using C#?
값이있는 속성은 Duration뿐입니다.
아이디어가 있으십니까?
감사합니다.C#에서 WMV 해상도 읽기
답변
나는 그것이 다 본 적이 유일한 방법은 재생 및 오픈 이벤트에 부착입니다 .
연결된 예제의 코드를 사용하지만 명시 적으로 함수 호출을 수행하여 height 및 width을 얻습니다.
예 :
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);
컴파일되지 않음 : 'WMPLib.IWMPMedia.imageSourceHeight.get': 명시 적으로 연산자 또는 접근자를 호출 할 수 없습니다. –
및 mediaInfo.imageSourceHeight는 0을 반환합니다. –
그는 맞습니다. 파일이 ** 재생 **되지 않는 한 imageSourceHeight 및 imageSourceWidth는 0을 반환합니다. – egrunin
저는 무료 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;
파일을 재생하려고합니까, 아니면 헤더 정보 만 가져 오시겠습니까? – egrunin
나는 그것을 재생할 필요가 없습니다, 그냥 정보를 얻을. –