Pergunta

Eu estou olhando para implementar uma função que recupera um único frame de um vídeo de entrada, para que eu possa usá-lo como uma miniatura.

algo nesse sentido deve funcionar:

// 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)
{
}

Alguém sabe como fazer isso em .Net 3.0?

A solução correta será o "melhor" implementação desta função. Os pontos de bónus para evitar a selecção de quadros em branco.

Foi útil?

Solução

acabei rolando minha própria autônomo de classe (com o único método que eu descrevi), a fonte pode ser visto aqui . navegador de mídia é GPL, mas estou feliz para o código que escrevi para esse arquivo para ser de domínio público. Tenha em mente que usa interoperabilidade do href="http://sourceforge.net/projects/directshownet/" rel="noreferrer"> directshow.net projeto assim você terá que limpar essa parte do código com eles.

Esta classe não trabalho para arquivos DVR-MS, você precisa injetar um filtro mostram direta para aqueles.

Outras dicas

1- Get versão mais recente do ffmpeg.exe de: http://ffmpeg.arrozcru.org/builds/

2 Extraia o arquivo e copiar ffmpeg.exe para o seu site

3 usar este código:

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();

Existem algumas bibliotecas em www.mitov.com que ajudam maio. É um invólucro genérico para a funcionalidade Directshow, e eu acho que um dos shows demos como tirar um quadro de um arquivo de vídeo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top