2009-04-13 3 views
0

프로그래밍 방식으로 AVI의 첫 번째 프레임을 검색하고 비트 맵 이미지를 가져 와서 사용자에게 미리보기를 표시하는 방법이 있는지 궁금합니다. Silverlight의 MediaControl은 AVI가 아닌 Silverlight 지원 비디오 파일의 미리보기를 보여줍니다. Silverlight 환경에 있기 때문에 관리되지 않는 코드 나 라이브러리를 사용할 수 없습니다. 파일 스트림에 대한 액세스 권한 만 있습니다.Silverlight에서 AVI의 첫 번째 프레임에 비트 맵 가져 오기

답변

1

Silverlight 런타임에는 AVI 파일이 기본적으로 지원되지 않으므로 MediaElement에서 해당 파일을 사용할 수 없습니다.

실제로해야 할 일은 실제로 AVI 파일을 손으로 구문 분석하고 해당 파일에서 프레임을 꺼내는 것입니다. 프레임을 파싱하는 지점에 도달하면 잠재적으로 조금 까다 롭습니다.

Silverlight 2에서이 작업을 수행하려면 Silverlight에서 지원하는 이미지 형식 (JPG 또는 PNG) 중 하나에 WMV 프레임이나 프레임이 있어야합니다. WMV로 작업한다면 MediaStreamSource를 설정하고 원하는 비디오 프레임을 MediaStreamSource에 첫 번째 샘플로 전달합니다. 이미지 형식 중 하나를 사용하여 작업하는 경우 Image를 사용하고 소스를 스트림으로 설정해야합니다. Joe Stegman이이 도구를 사용하여 Silverlight 2에서 기본이 아닌 image formats을 지원하는 데 도움이되는 예제를 볼 수 있습니다.

Silverlight 3 (현재 베타 버전)에서이 작업을 수행하는 경우 일반적으로 기술은 동일하지만 미디어 형식 지원이 조금 더 커지면 (WMV 외에) H264, Raw YV12 또는 Raw ARGB 프레임. 마찬가지로 이미징 프런트에서, 프레임을 그리는 데 사용할 수있는 WriteableBitmap을 사용할 수 있습니다.

비디오가 Theora, Divx, Xvid, VP6 등일 경우 Silverlight에 표시 할 수 있도록 해당 프레임을 디코딩 할 방법을 찾아야합니다.

1

비슷한 질문이 Silverlight forum에 게시되었습니다. 포럼 스레드는 코드 샘플을 포함합니다.

처음 몇 개의 프레임이 사라지거나 비디오를 잘 나타내지 않을 수 있으므로 프레임을 비디오 안으로 더 넣을 수 있습니다.

인코딩에 따라 MediaPlayer 클래스에서 AVI 파일을 읽을 수 없습니다. 호환되는 인코딩은 here을 참조하십시오. 관리 코드로이를 수행하기 위해 비디오를 코드 변환해야 할 수도 있습니다. 자신의 디코더를 찾거나 쓰지 않는 한.

관련 문제