문제

입력 비디오에서 단일 프레임을 검색하는 함수를 구현하려고하므로 썸네일로 사용할 수 있습니다.

이 라인을 따라 무언가가 작동해야합니다.

// filename examples: "test.avi", "test.dvr-ms"
// position is from 0 to 100 percent (0.0 to 1.0)
// returns a bitmap
byte[] GetVideoThumbnail(string filename, float position)
{
}

.NET 3.0 에서이 작업을 수행하는 방법을 아는 사람이 있습니까?

올바른 솔루션은이 기능의 "최고의"구현입니다. 빈 프레임 선택을 피하기위한 보너스 포인트.

도움이 되었습니까?

해결책

나는 내 자신의 독립형 클래스를 굴 렸습니다 (내가 설명한 단일 방법으로), 소스는 다음과 같습니다. 여기서 보았습니다. 미디어 브라우저입니다 GPL이지만 해당 파일이 공개 도메인이되기 위해 작성한 코드에 기뻐합니다. 그것은 interop을 사용합니다 DirectShow.net 프로젝트를 통해 코드의 해당 부분을 지워야합니다.

이 클래스는 DVR-MS 파일의 경우 작동하지 않으므로 직접 표시 필터를 주입해야합니다.

다른 팁

이 프로젝트는 AVI에 대한 트릭을 수행합니다. http://www.codeproject.com/kb/audio-video/avifilewrapper.aspx

다른 형식은 직접 쇼를 조사 할 수 있습니다. 도움이 될 수있는 몇 가지 프로젝트가 있습니다.
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/

1- ffmpeg.exe의 최신 버전을 얻으십시오. http://ffmpeg.arrozcru.org/builds/

2- 파일을 추출하고 웹 사이트에 ffmpeg.exe를 복사하십시오.

3-이 코드 사용 :

Process ffmpeg;

string video;
string thumb;

video = Server.MapPath("first.avi");
thumb = Server.MapPath("frame.jpg");

ffmpeg = new Process();

ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb;
ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe");
ffmpeg.Start();

일부 라이브러리가 있습니다 www.mitov.com 도움이 될 수 있습니다. DirectShow 기능을위한 일반 래퍼이며 데모 중 하나가 비디오 파일에서 프레임을 가져 오는 방법을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top