Como faço para obter uma miniatura de vídeo na Net?
-
03-07-2019 - |
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.
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
Este projecto irá fazer o truque para Avis: http: //www.codeproject .com / KB / áudio e vídeo / avifilewrapper.aspx
Qualquer coisa outros formatos, você pode olhar para o DirectShow. Existem alguns projetos que podem ajudar:
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/
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.
Isso também vale a pena ver:
http://www.codeproject.com/Articles/ 13237 / extract-Frames de-Vídeo-Files