2010-08-26 29 views
9

Yüklenen videonun ilk karesini çıkarmak ve resim dosyası olarak kaydetmek istiyorum.
Olası video formatları mpeg, avi ve wmv'dir.Videonun ilk karesini nasıl resim olarak kaydedebilirim?

Göz önüne alınması gereken bir şey de, bir ASP.NET web sitesi oluşturmamızdır.

+2

Herhangi bir videonun ilk karesi genellikle siyahtır. Birkaç çerçeveyi incelemek ve en büyük olanı (bayt boyutu) seçmek daha iyi olur. İster inanın ister inanmayın, özellikle de en karartılmış durumdaki 'en ilginç olana' iyi bir yaklaşımdır. –

cevap

6

FFMPEG'yi ayrı bir işlem (en basit yol) olarak kullanabilir ve sizin için ilk IDR'yi deşifre edebilirsiniz. Eğer video dosyasının adresini geçmesi buna Burada, GetThumbnail() yöntemini içeren bir sınıf FFMPEG var, JPEG görüntünün adresi görüntü olmak istiyorum yapılan ve çözünürlük edilecek: gibi

using System.Diagnostics; 
using System.Threading; 

public class FFMPEG 
{ 
    Process ffmpeg; 

    public void exec(string input, string output, string parametri) 
    { 
     ffmpeg = new Process(); 

     ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output; 
     ffmpeg.StartInfo.FileName = "utils/ffmpeg.exe"; 
     ffmpeg.StartInfo.UseShellExecute = false; 
     ffmpeg.StartInfo.RedirectStandardOutput = true; 
     ffmpeg.StartInfo.RedirectStandardError = true; 
     ffmpeg.StartInfo.CreateNoWindow = true; 

     ffmpeg.Start(); 
     ffmpeg.WaitForExit(); 
     ffmpeg.Close();  
    } 


    public void GetThumbnail(string video, string jpg, string velicina) 
    { 
     if (velicina == null) velicina = "640x480"; 
     exec(video, jpg, "-s "+velicina); 
    } 
} 

Kullanımı Bu: Bunun için

FFMPEG f = new FFMPEG(); 
f.GetThumbnail("videos/myvid.wmv", "images/thumb.jpg", "1200x223"); 

klasör/utils ffmpeg.exe olmalıdır, işe veya ffmpeg.exe bulmak için kodunu değiştirmek için.

.NET sarmalayıcıları gibi .NET'te FFMPEG'yi kullanmanın başka yolları da var, bunlar için google. Temelde aynı şeyi burada yaparlar, sadece daha iyi. Yani FFMPEG işinizi bitirirse, .NET sarıcısını kullanmayı öneririm. Yukarıda verilen cevap kodunda

ffmpeg.StartInfo.Arguments =" -i c:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg" 

yerine

ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output; 

:

+0

teşekkürler ... kontrol edeyim. Net sarıcı – CoderHawk

+0

Dosyanın ortasındaki bir yerden nasıl bir kare olsun? – Entity

+1

parametresi gibi -ss 00: 00: 01.00 – rogerdpack

0

Videolarla programlamayla çalışmak için muhtemelen en iyi araç FFMpeg'dir. Wmv bile birçok format desteği vardır. Bunun için bir .net wrapper bile var.

3

argüman dize biçimi gibi yapmaya çalışın.

Bunun nedenini bilmiyorum ama ikinci argüman hattı makinem üzerinde çalışmıyor, ilk komut gibi argümanı değiştirdiğimde iyi çalışıyor.

İlgili konular